package com.example.demo.utils;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.Days;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 日期工具
*/
public class DateUtil {
public static final long ONE_HOUR_TIME_LONG = 3600000;
/**
* 年(yyyy)
*/
public static final String YEAR = "yyyy";
/**
* 年-月(yyyy-MM)
*/
public static final String YEAR_MONTH = "yyyy-MM";
/**
* 年-月-日(yyyy-MM-dd)
*/
public static final String YEAR_MONTH_DAY = "yyyy-MM-dd";
/**
* 年月日(yyyyMMdd)
*/
public static final String YEAR_MONTH_DAY_SIMPLE = "yyyyMMdd";
/**
* 年-月-日 小时(yyyy-MM-dd HH)
*/
public static final String YEAR_MONTH_DAY_HOUR = "yyyy-MM-dd HH";
/**
* 年-月-日 小时(yyyy-MM-dd HH)中文输出
*/
public static final String YEAR_MONTH_DAY_HOUR_CN = "yyyy年MM月dd日HH时";
/**
* 年-月-日 小时:分钟(yyyy-MM-dd HH:mm)
*/
public static final String YEAR_MONTH_DAY_HOUR_MINUTE = "yyyy-MM-dd HH:mm";
/**
* 年-月-日 小时:分钟:秒钟(yyyy-MM-dd HH:mm:ss)
*/
public static final String YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss";
/**
* 年月日小时分钟秒钟(yyyyMMddHHmmss)
*/
public static final String YEAR_MONTH_DAY_HOUR_MINUTE_SECOND_SIMPLE = "yyyyMMddHHmmss";
/**
* 小时:分钟:秒钟(HH:mm:ss)
*/
public static final String HOUR_MINUTE_SECOND = "HH:mm:ss";
/**
* 小时:分钟(HH:mm)
*/
public static final String HOUR_MINUTE = "HH:mm";
/**
* 月.日(M.d)
*/
public static final String MONTH_DAY = "M.d";
public static final String REG_EXP_DATE = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$";
/**
* 一天的秒数
*/
private static final int DAY_SECOND = 24 * 60 * 60;
/**
* 一小时的秒数
*/
private static final int HOUR_SECOND = 60 * 60;
/**
* 一分钟的秒数
*/
private static final int MINUTE_SECOND = 60;
public DateUtil() {
System.setProperty("user.timezone", "Asia/Shanghai");
}
/**
* 获取当前时间
*
* @return 返回当前时间
*/
public static Date getCurrent() {
return new Date();
}
/**
* 获取当前时间并格式化
*
* @return 返回当前时间
*/
public static String getCurrentDate(String format) {
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(d);
}
/**
* 获取下个月时间并格式化
*
* @return 返回当前时间
*/
public static String getNextDate(String format) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 1);
SimpleDateFormat dft = new SimpleDateFormat(format);
String preMonth = dft.format(cal.getTime());
return preMonth;
}
/**
* 格式化日期时间
*
* @param date Date对象
* @param pattern 模式
* @return 格式化后的日期时间字符串
*/
public static String format(Date date, String pattern) {
if (date == null)
return "";
return new DateTime(date).toString(pattern);
}
/**
* 格式化日期时间字符串
*
* @param dateString 日期时间字符串
* @param pattern 模式
* @return Date对象
*/
public static Date formatDateString(String dateString, String pattern) {
try {
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(pattern);
return dateTimeFormatter.parseDateTime(dateString).toDate();
} catch (Exception e) {
return null;
}
}
/**
* 根据秒数获得x天x小时x分钟x秒字符串
*
* @param second 秒数
* @return x天x小时x分钟x秒字符串
*/
public static String getDayHourMinuteSecond(int second) {
if (second == 0) {
return "0秒";
}
StringBuilder sb = new StringBuilder();
int days = second / DAY_SECOND;
if (days > 0) {
sb.append(days);
sb.append("天");
second -= days * DAY_SECOND;
}
int hours = second / HOUR_SECOND;
if (hours > 0) {
sb.append(hours);
sb.append("小时");
second -= hours * HOUR_SECOND;
}
int minutes = second / MINUTE_SECOND;
if (minutes > 0) {
sb.append(minutes);
sb.append("分钟");
second -= minutes * MINUTE_SECOND;
}
if (second > 0) {
sb.append(second);
sb.append("秒");
}
return sb.toString();
}
/**
* 根据秒数获得x天x小时x分钟字符串
*
* @param second 秒数
* @return x天x小时x分钟字符串
*/
public static String getDayHourMinute(int second) {
if (second == 0) {
return "0分钟";
}
StringBuilder sb = new StringBuilder();
int days = second / DAY_SECOND;
if (days > 0) {
sb.append(days);
sb.append("天");
second -= days * DAY_SECOND;
}
int hours = second / HOUR_SECOND;
if (hours > 0) {
sb.append(hours);
sb.append("小时");
second -= hours * HOUR_SECOND;
}
int minutes = second / MINUTE_SECOND;
if (minutes > 0) {
sb.append(minutes);
sb.append("分钟");
}
return sb.toString();
}
/**
* 获取只含有年月日的DateTime对象
*
* @param dateTime DateTime对象
* @return 只含有年月日的DateTime对象
*/
public static DateTime getDateOnly(DateTime dateTime) {
return new DateTime(dateTime.toString(YEAR_MONTH_DAY));
}
/**
* 获取当前周的周一和下周一
*
* @return 日期数组(索引0为周一,索引1为下周一)
*/
public static Date[] getMondayAndNextMonday() {
DateTime dateTime = getDateOnly(new DateTime());
DateTime monday = dateTime.dayOfWeek().withMinimumValue();
DateTime nextMonday = monday.plusDays(7);
return new Date[]{monday.toDate(), nextMonday.toDate()};
}
/**
* 获取指定时间的周一和周日
*
* @param dateTime DateTime对象
* @return 日期数组(索引0为周一,索引1为周日)
*/
public static Date[] getMondayAndSunday(DateTime dateTime) {
dateTime = getDateOnly(dateTime);
DateTime monday = dateTime.dayOfWeek().withMinimumValue();
DateTime sunday = monday.plusDays(6);
return new Date[]{monday.toDate(), sunday.toDate()};
}
/**
* 和当前时间相比的天数差(正数为大于天数,负数为小于天数,零为同一天)
*
* @param date Date对象
* @return 和当前时间相比的天数差
*/
public static int compareDaysWithNow(Date date) {
return Days.daysBetween(new DateTime(), new DateTime(date)).getDays();
}
/**
* 和今天相比的天数差(正数为大于天数,负数为小于天数,零为同一天)
*
* @param date Date对象
* @return 和今天相比的天数差
*/
public static int compareDaysWithToday(Date date) {
DateTime today = new
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Springboot+MyBatis-Plus实现多租户动态数据源模式源码.zip 【备注】 主要针对计算机相关专业的正在做毕设的学生和需要项目实战的Java学习者。 也可作为课程设计、期末大作业。包含:项目源码、数据库脚本、项目说明等,该项目可以直接作为毕设使用。 也可以用来学习参考借鉴! 【特别强调】 1、csdn上资源保证是完整最新,会不定期更新优化; 2、请用自己的账号在csdn官网下载,若通过第三方代下,博主不对您下载的资源作任何保证,且不提供任何形式的技术支持和答疑!!!
资源推荐
资源详情
资源评论



























收起资源包目录

























































共 36 条
- 1
资源评论

- wfhyhhh2024-01-17没啥用,浪费钱 #毫无价值onnx2024-01-17怎么了?
- m0_594364542023-10-15这个资源总结的也太全面了吧,内容详实,对我帮助很大。onnx2024-01-17感谢支持
- 普通网友2023-07-11资源使用价值高,内容详实,给了我很多新想法,感谢大佬分享~onnx2023-10-08嗯嗯,感谢您的支持和对资源的认可!再次感谢
- 左效荣2023-05-27感谢大佬分享的资源给了我灵感,果断支持!感谢分享~onnx2023-10-08不客气!互相学习~

onnx
- 粉丝: 1w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于opencv与wechat-qrcode实现的JS版二维码图像识别库
- Pytorch-UNet-master.zip
- swoole-src-PHP资源
- js-screen-shot-JavaScript资源
- AJ-Report-SQL资源
- 在线刷题测试平台-计算机二级资源
- 毕业设计-毕业设计资源
- mumicm_dlut-美赛资源
- dachuang-大创资源
- 2025年c语言代码-蓝桥杯资源
- 汇编语言-汇编语言资源
- leetcode-master(代码随想录出品)-C语言资源
- klogging-C++资源
- Sa-Token-Java资源
- flask-uniapp开发图像识别小程序
- EFQRCode-Swift资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
