JavaSE进阶

10.8.2 java.time.temporal .TemporalAdjuster : 时间校正器

TemporalAdjuster : 时间校正器。有时我们可能需要获取例如:将日期调整到“下一个工作日”等操作。

TemporalAdjusters : 该类通过静态方法(firstDayOfXxx()/lastDayOfXxx()/nextXxx())提供了大量的常用 TemporalAdjuster 的实现。

public static void main(String[] args) {

LocalDate now = LocalDate.now();

System.out.println("下一个周日:"+now.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)));

System.out.println("下周五" + now.with(TemporalAdjusters.next(DayOfWeek.FRIDAY)));

        System.out.println("本月最后一天:"+now.with(TemporalAdjusters.lastDayOfMonth()));//2017-08-31

LocalDate week = LocalDate.now().with(new TemporalAdjuster(){

@Override

public Temporal adjustInto(Temporal temporal) {

LocalDate date = (LocalDate) temporal;

if(date.getDayOfWeek().equals(DayOfWeek.MONDAY)){

return date.plusDays(7);

}else if(date.getDayOfWeek().equals(DayOfWeek.TUESDAY)){

return date.plusDays(6);

}else if(date.getDayOfWeek().equals(DayOfWeek.WEDNESDAY)){

return date.plusDays(5);

}else if(date.getDayOfWeek().equals(DayOfWeek.THURSDAY)){

return date.plusDays(4);

}else if(date.getDayOfWeek().equals(DayOfWeek.FRIDAY)){

return date.plusDays(3);

}else if(date.getDayOfWeek().equals(DayOfWeek.SATURDAY)){

return date.plusDays(2);

}else{

return date.plusDays(1);

}

}

});

System.out.println("下一个工作日:" + week);

}

10.8.3 java.time.format.DateTimeFormatter 类

该类提供了三种格式化方法:

预定义的标准格式。如:ISO_DATE_TIME;ISO_DATE

本地化相关的格式。如:ofLocalizedDate(FormatStyle.MEDIUM)

自定义的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss”)

public static void main(String[] args) {

System.out.println(DateTimeFormatter.ISO_DATE.format(LocalDate.now()));

System.out.println(DateTimeFormatter.ISO_DATE_TIME.format(LocalDateTime.now()));

//FULL和SHORT适用于LocalDate和LocalTime

System.out.println(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).format(LocalDate.now()));

System.out.println(DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT).format(LocalTime.now()));

//LONG和MEDIUM适用于LocalDateTime

System.out.println(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).format(LocalDateTime.now()));

DateTimeFormatter op = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

System.out.println(op.format(LocalDateTime.now()));

}