java 8时间操作_Java8时间类LocalDate常用操作

标签:

java.time包中的是类是不可变且线程安全的。

新的时间及日期API位于java.time中,下面是一些关键类

●Instant——它代表的是时间戳,注意这里默认的Instant是比北京少8个时区

●LocalDate——不包含具体时间的日期,比如2014-01-14。它可以用来存储生日,周年纪念日,入职日期等。

●LocalTime——它代表的是不含日期的时间

●LocalDateTime——它包含了日期及时间,不过还是没有偏移信息或者说时区。

●ZonedDateTime——这是一个包含时区的完整的日期时间,偏移量是以UTC/格林威治时间为基准的,如:2018-10-08T18:12:38.547+08:00[Asia/Shanghai]。

1. Date转LocalDate

Date首先转化为Instant时间戳,

/**

* Date转LocalDate: Date -> Instant + System default time zone = LocalDate

*/

@Test

public void dateToLocalDateAndLocalDateTime(){

Date date = new Date();

Instant instant = date.toInstant();

/**

* instant : 2018-10-08T09:50:21.852Z

* Zone : UTC+0

* 注意这里默认的Instant是比北京少8个时区

*/

//获得本地默认时区

ZoneId defaultZoneId = ZoneId.systemDefault();

LocalDate localDate = instant.atZone(defaultZoneId).toLocalDate();

System.out.println(localDate);

//2018-10-08

}

2. 13位long类型转LocalDate

long -> Instant +System default time zone = LocalDate

public LocalDate longToLocalDate(Long time){

//System Default TimeZone : Asia/Shanghai

ZoneId defaultZoneId = ZoneId.systemDefault();

//2018-01-04T16:00:00Z

//时间戳

Instant instant = Instant.ofEpochMilli(time);

//2018-01-05

LocalDate localDate = instant.atZone(defaultZoneId).toLocalDate();

return localDate;

}

3. 获取现在的日期

Java8中有个叫LocalDate的类,能用来表示日期。这个类与java.util.Date略有不同,因为它只包含日期,没有时间。

3ad7dab260bf30a92b857cd959f8ff02.png

4. 获取年月日

de7201d2ba78ee06fa8e4f95028b9a0b.png

5. 判断两个日期之间相差多少天

/**

* 判断两个日期相差多少天

*/

@Test

public void localDateDiff(){

LocalDate date1 = LocalDate.of(2018,9,20);

LocalDate date2 = LocalDate.of(2018,10,3);

long l = date2.toEpochDay() - date1.toEpochDay();

System.out.println(l);

}

未完待续

部分参考:

标签:

来源: https://www.cnblogs.com/theRhyme/p/9756154.html

Java中的LocalDate是用来表示日期的,与java.util.Date略有不同,它只包含日期,没有时间。可以使用LocalDate进行各种日期操作。例如,可以使用以下方法获取年份、月份、日期、星期几等信息: - `LocalDate.now().getYear()`:获取当前年份。 - `LocalDate.now().getMonthValue()`:获取当前月份的数值表示,从1开始。 - `LocalDate.now().getMonth()`:获取当前月份的英文表示。 - `LocalDate.now().getDayOfMonth()`:获取当前日期,从1开始。 - `LocalDate.now().getDayOfYear()`:获取当前日期在当年中的第几天,从1开始。 - `LocalDate.now().getDayOfWeek()`:获取当前星期几。 - `LocalDate.now().lengthOfYear()`:获取当年的天数。 - `LocalDate.now().lengthOfMonth()`:获取当月的天数。 - `LocalDate.now().toEpochDay()`:获取当前日期与时间纪元(1970年1月1日)相差的天数,负数表示在时间纪元之前多少天。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Java8时间LocalDate常用操作](https://blog.csdn.net/weixin_42130889/article/details/114524861)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Java LocalDate](https://blog.csdn.net/qq_43308246/article/details/126142689)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值