Java8日期时间(LocalDate、LocalTime、LocalDateTime)()

  本篇文章为你整理了Java8日期时间(LocalDate、LocalTime、LocalDateTime)()的详细内容,包含有 Java8日期时间(LocalDate、LocalTime、LocalDateTime),希望能帮助你了解 Java8日期时间(LocalDate、LocalTime、LocalDateTime)。

  在看题的时候发现了Java8中新加入的日期时间类,觉得这个小哥写的不错,自己也跟着练习下。原文地址:https://blog.csdn.net/yy139926/article/details/124298574

  Java中1.8之前有date类,date类到了1.8大部分的方法被弃而且date类如果不格式化可读性十分差,而simpledateformat方法中format和parse方法都是线程不安全的。Java1.8之后出现了localdate,localdatetime,localtime这些类,而这些类使用了final来修饰,使得这些类是不可变的,一旦实例化,值就固定了,有点类似于String类,所以这些类都是线程安全的。

  一、LocalDate:年月日

  LocalDate类的实例是一个不可变对象,它只提供了简单的日期,并不含当天的时间信息,这个类是不可变的和线程安全的。

  
System.out.println(LocalDate.now().lengthOfMonth());

  //(10)与时间纪元(1970年1月1日)相差的天数,负数表示在时间纪元之前多少天 19180

  System.out.println(LocalDate.now().toEpochDay());

  //B.运算

  //(1)加一天

  System.out.println("加1天:" + LocalDate.now().plusDays(1));

  //(2)加一周

  System.out.println("加1周:" + LocalDate.now().plusWeeks(1));

  //(3)加一月

  System.out.println("加1月:" + LocalDate.now().plusMonths(1));

  //(4)加一年

  System.out.println("加1年:" + LocalDate.now().plusYears(1));

  //(5)减一天

  System.out.println("减1天:" + LocalDate.now().minusDays(1));

  //(6)减一周

  System.out.println("减1周:" + LocalDate.now().minusWeeks(1));

  //(7)减一月

  System.out.println("减1月:" + LocalDate.now().minusMonths(1));

  //(8)减一年

  System.out.println("减1年:" + LocalDate.now().minusYears(1));

  //C.替换

  //(1)替换年份:2000-07-07

  System.out.println("替换年份为2000:" + LocalDate.now().withYear(2000));

  //(2)替换月份:2020-01-07

  System.out.println("替换月份为1:" + LocalDate.now().withMonth(1));

  //(3)替换日子:2020-07-01

  System.out.println("替换日期为1:" + LocalDate.now().withDayOfMonth(1));

  //(4)替换天数:一年中的第多少天

  System.out.println("替换天数为1:" + LocalDate.now().withDayOfYear(1));

  //D.比较

  //(1)是否在当天之前

  System.out.println("是否在当天之前:" + LocalDate.now().minusDays(1).isBefore(LocalDate.now()));

  //(2)是否在当天之后

  System.out.println("是否在当天之后:" + LocalDate.now().plusDays(1).isAfter(LocalDate.now()));

  //(3)是否在当天

  System.out.println("是否在当天:" + LocalDate.now().isEqual(LocalDate.now()));

  //(4)是否是闰年

  System.out.println("今年是否是闰年:" + LocalDate.now().isLeapYear());

 

 

  1.2、LocalDate 与 String 之间的转换

  

//(1)从文本字符串获取LocalDate实例

 

  LocalDate localdate = LocalDate.parse("2022-04-21");

  System.out.println(localdate);

  //(2)使用特定格式化形式从文本字符串获取LocalDate实例

  String str = "2019-03-03";

  DateTimeFormatter fmt1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");

  LocalDate date = LocalDate.parse(str, fmt1);

  System.out.println(date);

  //(3)使用特定格式化形式将LocalDate转为字符串

  LocalDate today = LocalDate.now();

  DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy/MM/dd");

  String dateStr = today.format(fmt);

  System.out.println(dateStr);

 

  1.3、LocalDate 与 Date之间的转换

  

//(1)LocalDate转化为Date

 

  ZonedDateTime zonedDateTime = LocalDate.now().atStartOfDay(ZoneId.systemDefault());

  Date date = Date.from(zonedDateTime.toInstant());

  System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(date));

  //(2)Date转化为LocalDate

  LocalDate localDate = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

  System.out.println(localDate.format(DateTimeFormatter.ISO_LOCAL_DATE));

 

  
//(2)获取指定时区的当前时间 14:11:31.392

  System.out.println(LocalTime.now(ZoneId.of("Asia/Shanghai")));

  //(3)从指定时钟获取当前时间 14:11:31.392

  System.out.println(LocalTime.now(Clock.systemDefaultZone()));

  //(4)指定获取时分秒

  System.out.println(LocalTime.of(12, 30, 30));

  //(5)指定获取时分

  System.out.println(LocalTime.of(12, 30));

  //(6)指定获取时分秒纳秒

  System.out.println(LocalTime.of(12, 30, 30, 123));

  //(7)获取小时字段

  System.out.println("时: " + LocalTime.now().getHour());

  //(8)获取分钟字段

  System.out.println("分: " + LocalTime.now().getMinute());

  //(9)获取秒字段

  System.out.println("秒: " + LocalTime.now().getSecond());

  //(10)获取纳秒字段

  System.out.println("纳秒: " + LocalTime.now().getNano());

  //B.计算

  //(1)增加一小时

  System.out.println("增加1小时: " + LocalTime.now().plusHours(1));

  //(2)增加三十分钟

  System.out.println("增加30分钟: " + LocalTime.now().plusMinutes(30));

  //(3)增加三十秒

  System.out.println("增加30秒: " + LocalTime.now().plusSeconds(30));

  //(4)增加一万纳秒

  System.out.println("增加10000纳秒:" + LocalTime.now().plusNanos(10000));

  //(5)减少一小时

  System.out.println("减少1小时: " + LocalTime.now().minusHours(1));

  //(6)减少三十分钟

  System.out.println("减少30分钟: " + LocalTime.now().minusMinutes(30));

  //(7)减少三十秒

  System.out.println("减少30秒: " + LocalTime.now().minusSeconds(30));

  //(8)减少一万纳秒

  System.out.println("减少10000纳秒:" + LocalTime.now().minusNanos(10000));

  //C.比较

  //(1)时间与另一个时间比较 0(相等)正数(大)负数(小)

  System.out.println(LocalTime.now().compareTo(LocalTime.now()));

  //(2)检查时间是否在指定时间之后

  System.out.println(LocalTime.now().isAfter(LocalTime.now()));

  //(3)检查时间是否在指定时间之前

  System.out.println(LocalTime.now().isBefore(LocalTime.now()));

 

 

  2.2、LocalTime与 String 之间的转换

  

//(1)从文本字符串获取LocalTime实例

 

  LocalTime localTime1 = LocalTime.parse("12:30:30");

  System.out.println(localTime1);

  //(2)使用特定格式化形式从文本字符串获取LocalTime实例

  LocalTime localTime2 = LocalTime.parse("12:30:30", DateTimeFormatter.ofPattern("HH:mm:ss"));

  System.out.println(localTime2);

  //(3)使用特定格式化形式将LocalTime转为字符串

  DateTimeFormatter df1 = DateTimeFormatter.ofPattern("HH:mm:ss");

  LocalTime localTime3 = LocalTime.now();

  System.out.println(localTime3.format(df1));

 

  
static LocalDateTime of(LocalDate date, LocalTime time)

  根据日期和时间对象获取LocalDateTime 实例

  
static LocalDateTime of(int year, Month month, int dayOfMonth, int hour, int minute, int second)

  second) 根据指定的年、月、日、时、分、秒获取LocalDateTime 实例

  
//(1)获取默认时区的当前日期时间

  System.out.println(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

  //(2)获取指定时区的当前日期时间

  System.out.println(LocalDateTime.now(ZoneId.of("Asia/Shanghai")));

  //(3)从指定时钟获取当前日期时间

  System.out.println(LocalDateTime.now(Clock.systemDefaultZone()));

  //(4)根据日期和时间对象获取LocalDateTime实例

  System.out.println(LocalDateTime.of(LocalDate.now(), LocalTime.now()));

  //(5)根据指定的年、月、日、时、分、秒获取LocalDateTime实例

  System.out.println(LocalDateTime.of(2019, 12, 7, 21, 48, 50));

  //(6)获取年份

  System.out.println("年 : " + LocalDateTime.now().getYear());

  //(7)使用月份枚举类获取月份

  System.out.println("月(英文) : " + LocalDateTime.now().getMonth());

  //(8) 使用月份数字类获取月份

  System.out.println(" 月(数字英文): " + LocalDateTime.now().getMonth().getValue());

  //(9)获取日期在该月是第几天

  System.out.println("天 : " + LocalDateTime.now().getDayOfMonth());

  //(10)获取日期是星期几(英文)

  System.out.println("星期几(英文) : " + LocalDateTime.now().getDayOfWeek());

  //(11)获取日期是星期几(数字英文)

  System.out.println("星期几(数字英文) : " + LocalDateTime.now().getDayOfWeek().getValue());

  //(12)获取日期在该年是第几天

  System.out.println("本年的第几天 : " + LocalDateTime.now().getDayOfYear());

  //(13)获取小时

  System.out.println("时: " + LocalDateTime.now().getHour());

  //(14)获取分钟

  System.out.println("分: " + LocalDateTime.now().getMinute());

  //(15)获取秒

  System.out.println("秒: " + LocalDateTime.now().getSecond());

  //(16)获取纳秒

  System.out.println("纳秒: " + LocalDateTime.now().getNano());

  //B.计算

  //(1)增加天数

  System.out.println("增加天数 : " + LocalDateTime.now().plusDays(1));

  //(2)增加周数

  System.out.println("增加周数 : " + LocalDateTime.now().plusWeeks(1));

  //(3)增加月数

  System.out.println("增加月数 : " + LocalDateTime.now().plusMonths(1));

  //(4)增加年数

  System.out.println("增加年数 : " + LocalDateTime.now().plusYears(1));

  //(5)减少天数

  System.out.println("减少天数 : " + LocalDateTime.now().minusDays(1));

  //(6)减少月数

  System.out.println("减少月数 : " + LocalDateTime.now().minusMonths(1));

  //(7)减少周数

  System.out.println("减少周数 : " + LocalDateTime.now().minusWeeks(1));

  //(8)减少年数

  System.out.println("减少年数 : " + LocalDateTime.now().minusYears(1));

  //(9)增加小时

  System.out.println("增加1小时: " + LocalDateTime.now().plusHours(1));

  //(10)增加分钟

  System.out.println("增加30分钟: " + LocalDateTime.now().plusMinutes(30));

  //(11)增加秒数

  System.out.println("增加30秒: " + LocalDateTime.now().plusSeconds(30));

  //(12)增加纳秒

  System.out.println("增加10000纳秒:" + LocalDateTime.now().plusNanos(10000));

  //(13)减少小时

  System.out.println("减少1小时:" + LocalDateTime.now().minusHours(1));

  //(14)减少分钟

  System.out.println("减少30分钟:" + LocalDateTime.now().minusMinutes(30));

  //(15)减少秒数

  System.out.println("减少30秒: " + LocalDateTime.now().minusSeconds(30));

  //(16)减少纳秒

  System.out.println("减少10000纳秒:" + LocalDateTime.now().minusNanos(10000));

  //C.比较

  //(1)判断日期时间是否相等

  System.out.println(LocalDateTime.now().isEqual(LocalDateTime.now()));

  //(2)检查是否在指定日期时间之前

  System.out.println(LocalDateTime.now().isBefore(LocalDateTime.now()));

  //(3)检查是否在指定日期时间之后

  System.out.println(LocalDateTime.now().isAfter(LocalDateTime.now()));

 

 

  3.2、LocalDateTime与 String 之间的转换

  

//(1)获取日期部分

 

  System.out.println(LocalDateTime.now().toLocalDate());

  //(2)获取时间部分:时、分、秒

  System.out.println(LocalDateTime.now().toLocalTime().format(DateTimeFormatter.ofPattern("HH:mm:ss")));

  //(3)从文本字符串获取LocalDateTime实例

  LocalDateTime ldt2 = LocalDateTime.parse("2019-12-07T21:20:06.303995200");

  System.out.println(ldt2.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

  //(4)使用特定格式化形式从文本字符串获取LocalDateTime实例

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

  LocalDateTime ldt3 = LocalDateTime.parse("2019-12-07 21:20:06", df1);

  System.out.println(ldt3);

  //(5)使用特定格式化形式将LocalDateTime转为字符串

  String ldt4 = df1.format(ldt3);

  System.out.println(ldt4);

 

  3.3、LocalDateTime与 Date之间的转换

  

//(1)LocalDateTime转化为Date

 

  ZonedDateTime zdt = LocalDateTime.now().atZone(ZoneId.systemDefault());

  Date date1 = Date.from(zdt.toInstant());

  System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date1));

  //(2)Date转化为LocalDateTime

  LocalDateTime localDateTime = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();

  System.out.println(localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

 

  以上就是Java8日期时间(LocalDate、LocalTime、LocalDateTime)()的详细内容,想要了解更多 Java8日期时间(LocalDate、LocalTime、LocalDateTime)的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: