一、转换
1、与字符串
//LocalDateTime 转 字符串
String str = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
//字符串 转 LocalDateTime
LocalDateTime localDateTime = LocalDateTime.parse("2019-06-26 19:00:00",
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
2、与Date
// Date 转 LocalDateTime 与 LocalDate
Date date = new Date();
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
LocalDate localDate = instant.atZone(zoneId).toLocalDate();
//也可以使用LocalDateTime的FactoryInput()方法使用系统的默认时区
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), zoneId);
2小时2分8秒
Process finished with exit code 0
注:严格间隔不足24小时的相差天数会得到0,如果不考虑具体的时分秒可转换为LocalDate类型再求值。
四、日期格式化
JDK8之前:SimpleDateFormat来进⾏格式化,但SimpleDateFormat并不是线程安全的
JDK8之后:引⼊线程安全的⽇期与时间DateTimeFormatter
LocalDateTime ldt = LocalDateTime.now();
System.out.println(ldt);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String ldtStr = dtf.format(ldt);
System.out.println(ldtStr);
获取指定的⽇期时间对象
LocalDateTime ldt = LocalDateTime.of(2020, 11, 11, 8, 20, 30);
System.out.println(ldt);
五、常用API
public static void main(String[] args) throws InterruptedException {
System.out.println("当前日期:");
LocalDate currentDate = LocalDate.now();
System.out.println(currentDate);
System.out.println("----------------------------------");
System.out.println("当前日期的周一与周日:");
LocalDate monday = currentDate.with(DayOfWeek.MONDAY);
LocalDate sunday = currentDate.with(DayOfWeek.SUNDAY);
System.out.println(monday + " 与 " + sunday);
System.out.println("----------------------------------");
System.out.println("当天周日期:");
String currentDayOfWeek = currentDate.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINA);
System.out.println(currentDayOfWeek);
System.out.println(currentDate.getDayOfWeek().getValue());
System.out.println("----------------------------------");
System.out.println("当月第一天日期:");
LocalDate firstDayOfMonth = currentDate.with(TemporalAdjusters.firstDayOfMonth());
System.out.println(firstDayOfMonth);
System.out.println("----------------------------------");
System.out.println("当月最后一天日期:");
LocalDate lastDayOfMonth = currentDate.with(TemporalAdjusters.lastDayOfMonth());
System.out.println(lastDayOfMonth);
System.out.println("----------------------------------");
System.out.println("当月最后一天周日期:");
String lastDayOfWeek = lastDayOfMonth.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINA);
System.out.println(lastDayOfWeek);
System.out.println("----------------------------------");
System.out.println("当前日期后天周日期(数字):");
System.out.println(currentDate.plusDays(2).getDayOfWeek().getValue());
System.out.println("----------------------------------");
System.out.println("当天开始时间与结束时间:");
System.out.println(LocalDate.now().atStartOfDay());
System.out.println(LocalDate.now().atTime(LocalTime.MIN));
System.out.println(LocalDate.now().atTime(LocalTime.MAX));
}
注:
System.out.println(LocalDate.now().atTime(LocalTime.MIN));
System.out.println(LocalDate.now().atTime(LocalTime.MAX));
如果是LocalDateTime类型需使用下面API达到相同效果
LocalDateTime.now().with(LocalTime.MIN)
LocalDateTime.now().with(LocalTime.MAX);
//手动设置具体时分秒
LocalDateTime.of(LocalDate.now(),LocalTime.of(10,0,0));
或者:
LocalDate.now().atTime(LocalTime.of(10,0,0));Original: https://www.cnblogs.com/better-farther-world2099/p/11912052.html
Author: 奕锋博客
Title: Java8 日期时间API
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/571748/
转载文章受原作者版权保护。转载请注明原作者出处!