java 8 localdatetime_Java8-LocalDateTime

简介

Java8之前,时间都是使用Date类,但Date类缺点太多,使用起来很麻烦。

难以读懂返回的结果

public class BigDecimalStudy {

public static void main(String[] args) {

Date date = new Date();

System.out.println("当前时间" + date); // 当前时间Mon Dec 30 17:22:22 CST 2019

System.out.println("年份" + date.getYear()); // 年份119

System.out.println("月份" + date.getMonth()); // 月份11

}

}

太多的方法已被弃用,构造函数也被弃用

Java8的LocalDateTime很好的解决了这个问题

LocalDateTime

获取当前时刻非常直观

public class BigDecimalStudy {

public static void main(String[] args) {

LocalDateTime localDateTime = LocalDateTime.now();

System.out.println("当前时间: " + localDateTime);

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

System.out.println("月: " + localDateTime.getMonth());

System.out.println("日: " + localDateTime.getDayOfMonth());

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

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

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

}

}

结果为:

当前时间: 2019-12-30T17:55:22.574

年: 2019

月: DECEMBER

日: 30

时: 17

分: 55

秒: 22

构造一个指定的日期非常方便

public class BigDecimalStudy {

public static void main(String[] args) {

LocalDateTime localDateTime = LocalDateTime.of(2019, Month.DECEMBER, 12, 8, 12, 12);

System.out.println(localDateTime);

}

}

修改日期也非常的方便

public class BigDecimalStudy {

public static void main(String[] args) {

LocalDateTime localDateTime = LocalDateTime.of(2019, Month.DECEMBER, 12, 8, 12, 12);

System.out.println(localDateTime.minusYears(1)); // 减少一年 2018-12-12 08:12:12

System.out.println(localDateTime.plusDays(1)); // 增加一天 2018-12-13 08:12:12

System.out.println(localDateTime.withYear(2020)); // 直接修改年份 2020-12-13 08:12:12

}

}

格式化日期

public class BigDecimalStudy {

public static void main(String[] args) {

LocalDateTime localDateTime = LocalDateTime.now();

String result1 = localDateTime.format(DateTimeFormatter.ISO_DATE);

String result2 = localDateTime.format(DateTimeFormatter.BASIC_ISO_DATE);

String result3 = localDateTime.format(DateTimeFormatter.ofPattern("yyyy/MM/DD"));

System.out.println(result1); // 2020-01-01

System.out.println(result2); // 20200101

System.out.println(result3); // 2020/01/01

}

}

时间反解析

public class BigDecimalStudy {

public static void main(String[] args) {

LocalDateTime time = LocalDateTime.parse("2019--12--12 11:12", DateTimeFormatter.ofPattern("yyyy--MM--dd HH:mm"));

System.out.println(time); // 2019-12-12T11:12

}

}

Date和LocalDateTime的转换

/**

* java.util.Date --> java.time.LocalDateTime

*

* @param date Date

* @return LocalDateTime

*/

public static LocalDateTime dateToLocalDateTime(Date date) {

return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();

}

/**

* java.time.LocalDateTime --> java.util.Date

*

* @param localDateTime LocalDateTime

* @return Date

*/

public static Date localDateTimeToDate(LocalDateTime localDateTime) {

return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());

}

线程安全性问题

Date时间类是可变类,线程不安全,SimpleDateFormat也是线程不安全的

LocalDateTime是线程安全的,DateTimeFormatter也是线程安全的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值