虽然现在日期处理大部分都用joda了,java 8之后也有一部分转标准库自带的ZonedDateTime了.
但是某些情况下 java .util.Date更简单一些,之后有需求修改,复杂的情况可以使用DateFormatUtils、DateUtils工具类。
有2点需要注意
1):不建议修改日期的时分秒,因为有时区问题
2):不建议加减月份、年份,一个月有28、29、30、31四种情况,有月底的取齐问题
示例代码
SimpleDateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
dateFormat.setTimeZone(TimeZone.getTimeZone(” Asia /Shanghai”));
Date parsedDate = dateFormat.parse(“2022-01-28 12:29:21”);
System.out.println(parsedDate);
dateFormat.setTimeZone(TimeZone.getTimeZone(“UTC”));
System.out.println(dateFormat.format(parsedDate));
String formattedDateStr = DateFormatUtils.format(parsedDate,”MM-dd HH/mm”,TimeZone.getTimeZone(“Asia/Shanghai”));
System.out.println(formattedDateStr);
Date addedDate = DateUtils.addDays(parsedDate,15);
System.out.println(dateFormat.format(addedDate));
addedDate = DateUtils.addDays(addedDate,-5);
System.out.println(dateFormat.format(addedDate));
DateUtils.setDays(addedDate,28);
System.out.println(dateFormat.format(addedDate));
Date setedDaysDate = DateUtils.setDays(addedDate,28);
System.out.println(dateFormat.format(setedDaysDate));
System.out.println(dateFormat.format(DateUtils.setHours(addedDate,2)));
输出
Fri Jan 28 12:29:21 CST 2022
2022-01-28 04:29:21
01-28 12/29
2022-02-12 04:29:21
2022-02-07 04:29:21
2022-02-07 04:29:21
2022-02-28 04:29:21
2022-02-06 18:29:21