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
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
一、功能描述 文章管理 分类管理 评论管理 数据库监控 通用页面 后台首页 友链管理 在线用户 权限管理 角色管理 站点管理 标签管理 主题管理 上传管理 用户管理 踢出页面 登录页面 注册页面 主题目录 默认主题 二、技术栈 Spring Boot、Apache Shiro、MyBatis-Plus、Alibaba Druid、Redis、MySQL、Thymeleaf 三、安装 将本项目源码导入本地开发工具(如 IntelliJ IDEA ),本地开发工具需要安装 lombok 插件 安装Mysql数据库:Mysql版本最低支持5.7,新建 database CREATE DATABASE pb_cms_base; 初始化数据库:找到项目数据库文件:docs/db/pb_cms_base.sql,执行 pb_cms_base.sql 前台首页,浏览器访问http://localhost:8080 后台首页,浏览器访问http://localhost:8080/admin使用账号密码admin,123456登录系统后台。
资源推荐
资源详情
资源评论
收起资源包目录
SpringBoot+Shiro+Mybatis+Thymeleaf个人博客前后台管理系统 (2002个子文件)
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
共 2002 条
- 1
- 2
- 3
- 4
- 5
- 6
- 21
资源评论
飞翔的佩奇
- 粉丝: 3598
- 资源: 802
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功