(一)字符串互转日期类型
| LocalDateTime date = LocalDateTime.now();//2020-02-01T17:13:32.332
DateTimeFormatter format1 = DateTimeFormatter.ofPattern(“yyyy/MM/dd HH:mm:ss”);
//——-日期转字符串
String str = date.format(format1);// 2020/02/01 17:13:32
DateTimeFormatter format2 = DateTimeFormatter.ofPattern(“yyyy/MM/dd HH:mm:ss”);
//———字符串转日期
LocalDate date2 = LocalDate.parse(str, format2); //2020-02-01
LocalDateTime parse = LocalDateTime.parse(str, format2); //2020-02-01T17:14:02 |
| —- |
(二)转换成指定的时区
| //6.ZonedDate、ZonedTime、ZonedDateTime : 带时区的时间或日期
@Test
public void ceui指定时区的时间或日期() {
// ZoneId 还有更多的时区,如果涉及到了业务了再接着研究
LocalDateTime of = LocalDateTime._of(2020, 02, 01, 17, 38, 20, 500);
System.out.println(of);//2020-02-01T17:38:20.000000500
ZonedDateTime zonedDateTime = of.atZone(ZoneId.of(“Asia/Shanghai”));//2020-02-01T17:38:20.000000500+08:00[Asia/Shanghai]
ZonedDateTime zonedDateTime1 = of.atZone(ZoneId.of(“US/Pacific”));//2020-02-01T17:38:20.000000500-08:00[US/Pacific]
//指定时区的当前时间
LocalDateTime ldt = LocalDateTime.now(ZoneId.of(“Asia/Shanghai”));//2020-02-01T17:40:32.071
//注意下面两个是带时区的了.
ZonedDateTime now = ZonedDateTime.now(ZoneId.of(“Asia/Shanghai”));//2020-02-01T17:40:32.072+08:00[Asia/Shanghai]
ZonedDateTime zdt = ZonedDateTime.now(ZoneId.of(“US/Pacific”));//2020-02-01T01:40:32.072-08:00[US/Pacific]
System.out.println(zdt);
} |
| —- |
(三)自定义日期时间格式化
| //系统默认的,不好用
// DateTimeFormatter dtf2 = DateTimeFormatter.ISODATE_TIME;
// System.out.println(“dtf2 = “ + dtf2);
//自定义时间日期格式化
LocalDateTime ldt = LocalDateTime._now();
System.out.println(“ldt = “ + ldt); //2019-11-06T11:12:52.492
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(“yyyy年MM月dd日 HH:mm:ss E”);
String strDate = ldt.format(dtf); //日期格式化String
System.out.println(“strDate = “ + strDate); // 2019年11月06日 11:12:52 星期三
//解析String为LocalDateTime
LocalDateTime newLdt = ldt.parse(strDate, dtf);
System.out.println(newLdt); // 2019-11-06T11:12:52 |
| —- |
1.修改年月日时分秒
| //初始化
LocalDateTime localDateTime = LocalDateTime.of(2016, 11, 21, 10, 10, 10);
System.out.println(localDateTime);//2016-11-21T10:10:10
// 给LocalDateTime转成String字符串
String format = localDateTime.format(DateTimeFormatter.ofPattern(“yyyy年MM月dd日 HH:mm:ss E”));
System.out.println(format); //2016年11月21日 10:10:10 星期一
//修改完了都会返回新的对象
//修改年月日 的日
LocalDateTime ldt2 = localDateTime.withDayOfMonth(10);
System.out.println(“ldt2 = “ + ldt2); //2016-11-10T10:10:10
//修改秒
LocalDateTime localDateTime1 = localDateTime.withSecond(22);//2016-11-21T10:10:22
//修改小时
LocalDateTime localDateTime2 = localDateTime.withHour(1);//2016-11-21T01:10:10
//修改分钟
LocalDateTime localDateTime3 = localDateTime.withMinute(22);//2016-11-21T10:22:10
//修改月
LocalDateTime localDateTime4 = localDateTime.withMonth(1);//2016-01-21T10:10:10
//纳秒
LocalDateTime localDateTime5 = localDateTime.withNano(55);//2016-11-21T10:10:10.000000055
//修改年
LocalDateTime localDateTime6 = localDateTime.withYear(2000);//2000-11-21T10:10:10
//修改天数 属于 年,注意这个和withDayOfMonth是不一样的,
//withDayOfYear 是按年计算的(55是从1月1日开始计算),withDayOfMonth 是按月计算的+
LocalDateTime localDateTime7 = localDateTime.withDayOfYear(55);//2016-02-24T10:10:10
LocalDateTime ldt3 = localDateTime.with(TemporalAdjusters.next(DayOfWeek.SUNDAY));//本周的星期天 2016-11-27T10:10:10 |
| —- |
(四)获取下一个工作日
如果是周一至周四就获取下一天日期的,如果是周五到周六周日就获取下周一的日期.
| //初始化
LocalDateTime localDateTime = LocalDateTime.of(2016, 11, 25, 10, 10, 10);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(“yyyy年MM月dd日 HH:mm:ss E”);
String strDate = localDateTime.format(dtf);
//获取自定义:下一个工作日
LocalDateTime ldt5 = localDateTime.with((l) -> {
LocalDateTime ldt4 = (LocalDateTime) l;
DayOfWeek dow = ldt4.getDayOfWeek();
if (dow.equals(DayOfWeek.FRIDAY)) {
return ldt4.plusDays(3);
} else if (dow.equals(DayOfWeek.SATURDAY)) {
return ldt4.plusDays(2);
} else {
return ldt4.plusDays(1);
}
});
String format = ldt5.format(dtf);
System.out.println(“下一个工作日是: “ +format);
} |
| —- |