java的日期处理工具类汇总
在编写程序时,日常经常会使用日期转换字符串,字符串转换日期,或者日期之间的计算等等.
日常接触的jdk自带的时间类为
- java.util.Date
- java.text.SimpleDateFormat
- java.util.Calendar
以上的类为基本上古董级的java日期处理类,使用起来非常不方便,且很容易存在性能问题.
后续接触 到 joda-time
https://www.joda.org/joda-time/
日常使用的一些例子汇总一下:
- 获取当月的第一天:
DateTime property = DateTime.now().withDayOfMonth(1).withMillisOfDay(0);
System.out.println("获取当月的第一天:" + property.toDate());
获取当月的第一天:Fri Feb 01 00:00:00 CST 2019
- 格式化为指定时间格式string字符串
String yyyyMMddHHmmss = DateTime.now().withDayOfMonth(1).withMillisOfDay(0).toString("yyyyMMddHHmmss");
System.out.println("格式化为 yyyyMMddHHmmss:" + yyyyMMddHHmmss);
String yyyyMMdd = DateTime.now().withDayOfMonth(1).withMillisOfDay(0).toString("yyyyMMdd");
System.out.println("格式化为 yyyyMMdd:" + yyyyMMdd);
格式化为 yyyyMMddHHmmss:20190201000000
格式化为 yyyyMMdd:20190201
- 获取当月的最后一天
DateTime dateTime = new DateTime("2016-02").dayOfMonth().withMaximumValue();
System.out.println("获取当月的最后一天:" + dateTime.toString());
获取当月的最后一天:2016-02-29T00:00:00.000+08:00
- 计算两个日期的时间间隔为多少天
DateTime startDate = new DateTime(DateUtil.convertDate(dto.getStartTime(), DateUtil.SHORT_DATE_FORMAT));
DateTime endDate = new DateTime(DateUtil.convertDate(dto.getEndTime(), DateUtil.SHORT_DATE_FORMAT));
int days = Days.daysBetween(startDate, endDate).getDays();
/**
* 时间格式转换
*
* @param strDate
* @return
*/
public static Date convertDate(String strDate, String format) {
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
try {
return dateFormat.parse(strDate);
} catch (Exception exception) {
LogUtil.error("时间转换异常:" + strDate, exception);
}
return new Date();
}
后续有待更新
2019年2月22日15:36:17