15-java-LocalDateTime

Java LocalDateTime使用

构造方法

1、获取当前时间

//获取当前时间对象
LocalDateTime now = LocalDateTime.now();
//指定时区:可以指定特定的时区或是系统默认的时区
LocalDateTime.now(ZoneId.systemDefault());
LocalDateTime now = LocalDateTime.now(ZoneId.of(ZoneId.SHORT_IDS.get("CTT")));

2、通过字符串解析成LocalDateTime对象

默认的LocalDateTime显示的字符串信息如下:

2023-03-08T17:11:20.042

因此我们需要自定义解析的样式模板,这个模板可以用于解析字符串,也可以用于格式化输出LocalDateTime对象

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//解析输入的字符串
LocalDateTime parse = LocalDateTime.parse("2023-03-02 00:00:00", formatter);
//如果不指定formatter,LocalDateTime有对应的重载方法,内部调用默认的解析模板,这个方法要求输入的字符串为默认的LocalDateTime显示的字符串格式,即中间有"T",不然会抛异常
LocalDateTime parse2 = LocalDateTime.parse("2023-03-01T00:00:00");

3、时间戳与LocalDateTime的互相转换

3.1 时间戳转LocalDateTime

//先获取时间戳
long currentTimeMillis = System.currentTimeMillis();
//利用时间戳转Instant对象,最后通过Instant对象设置时区,得到LocalDateTime对象,这里代码拆成2步
Instant instant = Instant.ofEpochMilli(currentTimeMillis);
LocalDateTime localDateTime1 = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
//时区可以设置为系统默认,或直接手动设置为东八区
//LocalDateTime localDateTime2 = LocalDateTime.ofInstant(instant, ZoneId.of("+8"));

3.1 LocalDateTime对象转时间戳

//先设置时区,转成instant对象,在利用toEpochMilli方法转成时间戳
LocalDateTime localDateTime = LocalDateTime.now();
long timestamp = localDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();

4、Date对象和LocalDateTime对象之间的转换

4.1 Date转LocalDateTime

先设置时区转为Instant对象,在转为LocalDateTime对象

Date date = new Date(System.currentTimeMillis());
//可以设置时区或使用系统默认时区
//LocalDateTime x = date.toInstant().atZone(ZoneOffset.of("+8")).toLocalDateTime();
LocalDateTime x = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();

4.2 LocalDateTime转Date

先设置时区转为Instant对象,在转为Date对象

LocalDateTime localDateTime = LocalDateTime.now();
Date from = Date.from(now.toInstant(ZoneOffset.of("+8")));
posted @ 2023-03-08 19:51  书画三千里  阅读(180)  评论(0)    收藏  举报