package com.puboot.common.util;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
/**
* 日期工具类
*
* @author Linzhaoguan
* @version V1.0
* @date 2019年9月11日
*/
@Slf4j
@UtilityClass
public class DateUtil {
public static final long ONE_DAY_SECONDS = 86400;
public static final String SHORT_FORMAT = "yyyyMMdd";
public static final String LONG_FORMAT = "yyyyMMddHHmmss";
public static final String concurrentFormat = "yyyyMMddHHmmssSSS";
public static final String shortConcurrentFormat = "yyMMddHHmmssSSS";
public static final String webFormat = "yyyy-MM-dd";
public static final String webMonthFormat = "yyyy-MM";
public static final String timeFormat = "HH:mm:ss";
public static final String monthFormat = "yyyyMM";
public static final String chineseDtFormat = "yyyy年MM月dd日";
public static final String chineseYMFormat = "yyyy年MM月";
public static final String newFormat = "yyyy-MM-dd HH:mm:ss";
public static final String noSecondFormat = "yyyy-MM-dd HH:mm";
public static final String MdFormat = "MM-dd";
public static final long ONE_DAY_MILL_SECONDS = 86400000;
public static DateFormat getNewDateFormat(String pattern) {
DateFormat df = new SimpleDateFormat(pattern);
df.setLenient(false);
return df;
}
public static String format(Date date, String format) {
return new SimpleDateFormat(format).format(date);
}
public static String format(String dateStr, String oldFormat, String newFormat) throws ParseException {
String result = null;
DateFormat oldDateFormat = new SimpleDateFormat(oldFormat);
DateFormat newDateFormat = new SimpleDateFormat(newFormat);
Date date = oldDateFormat.parse(dateStr);
result = newDateFormat.format(date);
return result;
}
public static Date parseDateNoTime(String sDate) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat(SHORT_FORMAT);
return dateFormat.parse(sDate);
}
public static Date parseDateNoTime(String sDate, String format) throws ParseException {
if (StrUtil.isBlank(format)) {
throw new ParseException("Null format. ", 0);
}
DateFormat dateFormat = new SimpleDateFormat(format);
return dateFormat.parse(sDate);
}
public static Date parseDateNoTimeWithDelimit(String sDate, String delimit) throws ParseException {
sDate = sDate.replaceAll(delimit, "");
DateFormat dateFormat = new SimpleDateFormat(SHORT_FORMAT);
return dateFormat.parse(sDate);
}
public static Date parseDateLongFormat(String sDate) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat(LONG_FORMAT);
return dateFormat.parse(sDate);
}
public static Date parseDateNewFormat(String sDate) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat(newFormat);
dateFormat.setLenient(false);
return dateFormat.parse(sDate);
}
public static Date parseDateNoSecondFormat(String sDate) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat(noSecondFormat);
dateFormat.setLenient(false);
return dateFormat.parse(sDate);
}
public static Date parseDateWebFormat(String sDate) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat(webFormat);
dateFormat.setLenient(false);
return dateFormat.parse(sDate);
}
public static Date parseDateWebMonthFormat(String sDate) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat(webMonthFormat);
dateFormat.setLenient(false);
return dateFormat.parse(sDate);
}
/**
* 计算当前时间几小时之后的时间
*
* @param date
* @param hours
* @return
*/
public static Date addHours(Date date, long hours) {
return addMinutes(date, hours * 60);
}
/**
* 计算当前时间几分钟之后的时间
*
* @param date
* @param minutes
* @return
*/
public static Date addMinutes(Date date, long minutes) {
return addSeconds(date, minutes * 60);
}
/**
* @param date1
* @param secs
* @return
*/
public static Date addSeconds(Date date1, long secs) {
return new Date(date1.getTime() + secs * 1000);
}
/**
* 判断输入的字符串是否为合法的小时
*
* @param hourStr
* @return true/false
*/
public static boolean isValidHour(String hourStr) {
if (NumberUtil.isNumber(hourStr)) {
int hour = Integer.parseInt(hourStr);
return hour >= 0 && hour <= 23;
}
return false;
}
/**
* 判断输入的字符串是否为合法的分或秒
*
* @param str
* @return true/false
*/
public static boolean isValidMinuteOrSecond(String str) {
if (NumberUtil.isNumber(str)) {
int hour = Integer.parseInt(str);
return hour >= 0 && hour <= 59;
}
return false;
}
/**
* 取得新的日期
*
* @param date1 日期
* @param days 天数
* @return 新的日期
*/
public static Date addDays(Date date1, long days) {
Calendar cal = Calendar.getInstance();
cal.setTime(date1);
cal.add(Calendar.DATE, (int) days);
return cal.getTime();
}
public static String getTomorrowDateString(String sDate) throws ParseException {
Date aDate = parseDateNoTime(sDate);
aDate = addSeconds(aDate, ONE_DAY_SECONDS);
return getDateString(aDate);
}
public static String getTomorrowDateNewFMTString(String sDate) throws ParseException {
Date aDate = parseDateWebFormat(sDate);
aDate = addDays(aDate, 1);
return getWebDateString(aDate);
}
public static String getTomorrowDateNewFormatString(String sDate) throws ParseException {
Date aDate = parseDateNewFormat(sDate);
aDate = addDays(aDate, 1);
return getWebDateString(aDate);
}
public static String getLongDateString(Date date) {
DateFormat dateFormat = new SimpleDateFormat(LONG_FORMAT);
return getDateString(date, dateFormat);
}
public static String getNewFormatDateString(Date date) {
DateFormat dateFormat = new SimpleDateFormat(newFormat);
return getDateString(date, dateFormat);
}
public static String getWebFormatDateString(Date date) {
DateFormat dateFormat = new SimpleDateFormat(webFormat);
return getDateString(date, dateFormat);
}
public static String getConcurrentFormatDateString(Date date) {
DateFormat dateFormat = new SimpleDateFormat(concurrentFormat);
return getDateString(date, dateFormat);
}
public static String getDateString(Date date, DateFormat dateFormat) {
if (date == null || dateFormat == null) {
return null;
}
return dateFormat.format(date);
}
public static String getYesterDayDateString(String sDate) throws ParseException {
Date aDate = parseDateNoTime(sDate);
aDate = addSeconds(aDate, -ONE_DAY_SECONDS);
return getDateString(aDate);
}
/**
* @return 当天的时间格式化为"yyyyMMdd"
*/
public static String getDateString(Date date) {
DateFormat df = getNewDateFormat(SHORT_FORMAT);
return df.format(date);
}
public static String getWebDateString(Date date) {
DateFormat dateFormat = getNewDateFormat(webFormat);
return getDat
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
瀑布内容管理系统,采用SpringBoot + Apache Shiro + Mybatis Plus + Thymeleaf 实现的内容管理系统(附带权限管理),是搭建博客、网站的不二之选 后台测试账号 账号:guest 密码:123456 安装 将本项目源码导入本地开发工具(如 IntelliJ IDEA ),本地开发工具需要安装 lombok 插件 安装Mysql数据库:Mysql版本最低支持5.7,新建 database CREATE DATABASE pb_cms_base; 初始化数据库:找到项目数据库文件:docs/db/pb_cms_base.sql,执行 pb_cms_base.sql 安装Redis:Redis最低版本支持 3.2 修改(resources/application.yml)配置文件 修改数据库链接相关连接串、用户名和密码(可搜索datasource) redis配置(可搜索redis) 运行项目(三种方式) 项目根目录下执行mvn -X clean package -Dmaven.test.skip=true编译打包,然后执行java -jar pb
资源推荐
资源详情
资源评论
收起资源包目录
SpringBoot + Mybatis Plus 实现的瀑布内容管理系统、CMS建站系统源码+数据库+项目说明文档 (2004个子文件)
adminlte.css 1.49MB
adminlte.min.css 1.33MB
adminlte.light.css 970KB
adminlte.light.min.css 855KB
adminlte.core.css 794KB
adminlte.core.min.css 699KB
adminlte.components.css 384KB
adminlte.components.min.css 350KB
adminlte.plugins.css 310KB
adminlte.plugins.min.css 284KB
bootstrap.min.css 118KB
adminlte.min.css 88KB
all.css 71KB
all.css 71KB
fontawesome.css 69KB
fontawesome.css 69KB
all.min.css 57KB
all.min.css 57KB
fontawesome.min.css 56KB
fontawesome.min.css 56KB
v4-shims.css 40KB
v4-shims.css 40KB
all-skins.min.css 40KB
adminlte.extra-components.css 39KB
flag-icon.css 37KB
jquery-ui.css 36KB
icon.css 36KB
pace-theme-material.css 34KB
pace-theme-material.css 34KB
pace-theme-material.css 34KB
pace-theme-material.css 34KB
pace-theme-material.css 34KB
pace-theme-material.css 34KB
pace-theme-material.css 34KB
pace-theme-material.css 34KB
pace-theme-material.css 34KB
pace-theme-material.css 34KB
adminlte.extra-components.min.css 34KB
flag-icon.min.css 33KB
jquery-ui.min.css 31KB
font-awesome.min.css 30KB
main.css 27KB
v4-shims.min.css 26KB
v4-shims.min.css 26KB
bootstrap-switch.css 23KB
OverlayScrollbars.css 23KB
swiper.css 22KB
_all.css 21KB
bootstrap-switch.min.css 19KB
adminlte.pages.css 19KB
swiper.min.css 19KB
OverlayScrollbars.min.css 19KB
jquery-ui.structure.css 18KB
jquery-ui.theme.css 18KB
adminlte.pages.min.css 16KB
web.min.css 16KB
_all.css 15KB
jquery-ui.structure.min.css 15KB
style.css 15KB
style.min.css 15KB
icheck-bootstrap.css 14KB
layer.css 14KB
layer.css 14KB
main.min.css 14KB
_all.css 14KB
jquery-ui.theme.min.css 14KB
_all.css 13KB
web-blog.css 13KB
icheck-bootstrap.min.css 12KB
github-markdown.min.css 11KB
bootstrap-colorpicker.css 11KB
simplemde.min.css 11KB
bootstrap-slider.css 10KB
webuploader.css 10KB
webuploader.css 10KB
admin-common.css 10KB
bootstrap-table.css 9KB
bootstrap-colorpicker.min.css 9KB
pace-theme-loading-bar.css 9KB
pace-theme-loading-bar.css 9KB
pace-theme-loading-bar.css 9KB
pace-theme-loading-bar.css 9KB
pace-theme-loading-bar.css 9KB
pace-theme-loading-bar.css 9KB
pace-theme-loading-bar.css 9KB
pace-theme-loading-bar.css 9KB
pace-theme-loading-bar.css 9KB
pace-theme-loading-bar.css 9KB
bootstrap-slider.min.css 9KB
tempusdominus-bootstrap-4.min.css 9KB
tempusdominus-bootstrap-4.css 9KB
bootstrap-table.min.css 9KB
svg-with-js.css 8KB
svg-with-js.css 8KB
web-common.css 8KB
daterangepicker.css 7KB
fontawesome-iconpicker.css 7KB
fontawesome-iconpicker.css 7KB
main.css 7KB
ekko-lightbox.css 7KB
共 2004 条
- 1
- 2
- 3
- 4
- 5
- 6
- 21
资源评论
- 芊暖2023-07-25件提供了一个基于SpringBoot和Mybatis Plus实现的瀑布内容管理系统和CMS建站系统的源码和项目说明文档。
- 蒋寻2023-07-25构清晰,代码规范,易于理解和维护。
- 断脚的鸟2023-07-25详细介绍了这个系统的实现方式和使用方法,非常实用。
- 伯特兰·罗卜2023-07-25件是一个很好的学习资料和参考资源,对于想要了解和实践瀑布内容管理系统的人来说,非常有价值。
- 文润观书2023-07-25提供了详细的数据库设计和操作说明,帮助开发者轻松上手。
yanglamei1962
- 粉丝: 2647
- 资源: 926
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 半导体封装材料行业发展趋势:预计2031年年复合增长率(CAGR)高达13.0%
- 台达DVP PLC与3台施耐德ATV12变频器通讯程序 程序有注释 并附送程序,有接线方式,设置 同时自动走完变频器DRIVECOM流程,解决施耐德ATV变频器断电重启后,自准备工
- Greenplum Platform Extension Framework 6.11.0 for RHEL 7 pxf gp6
- adsadsadasda
- 最优化理论应用于铣床任务分配的MATLAB线性规划实现
- 摩托罗拉CPS2.0最新版支持到202401季度,02.23版本 带模拟授权
- 元宇宙智慧家庭综合项目任务书:探索智能家居与元宇宙整合的新方式
- 基于 SSM 框架的区块链钱包管理系统设计与实现-项目考核要点
- VMware Workstation运行qcow2镜像操作手册
- frp-0.35.1-windows-386,win7/win2008电脑专用
- 基于微信小程序的电影交流平台答辩PPT.ppt
- 基于微信小程序的“健康早知道”微信小程序答辩PPT.ppt
- 基于微信小程序的党员之家服务系统小程序答辩PPT.ppt
- 基于微信小程序的高校课堂教学管理系统答辩PPT.ppt
- 基于微信小程序的驾校报名小程序答辩PPT.ppt
- 基于微信小程序的高校毕业论文管理系统小程序答辩PPT.ppt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功