当前位置:首页 > 谈天说地

ja截取日期的年月日时间_ja获取date的年月日

34资源网2022-06-09648

我们平时开发日期一般都是使用Date类。在使用Date计算时,一般将会将Date转换成时间戳,即转换成ms后进行计算,这样做很麻烦。当然我们也可以使用三方日期类。

其实Ja8自带的日期类就相当的强大了,基本能满足各种计算。今天我们就来聊聊Ja8里面的日期类。

LocateDate与LocateDateTime

LocateDate获取的是日期,精确到天。LocateDateTime则可以精确到秒。

如上代码,运行结果为:

todayDateTime : 2021-11-02T16:13:02.638todayDate : 2021-11-02

我们需要精确日期到秒时可以使用LocalDateTime。如果只需要精确到天,就可以使用LocalDate,比如判断两个日期是否为同就可以使用LocalDate。

如果你的需求只需要获取时间,不需要日期。可以使用LocalTime。

@Testpublic void getCurrentTime() {  LocalTime localTime = LocalTime.now();  System.out.println("localTime :" + localTime);}

运行结果为:

localTime :16:20:20.111

由此可见Ja8后日期类更加丰富了,对日期类的处理也更加人化了。

获取日期的年月日

Ja8的LocalDate里面自带的方法可以获取到日期的年月日。

//获取年、月、日信息@Testpublic void getDetailDate() {    LocalDate today = LocalDate.now();    int year = today.getYear();    int month = today.getMonthValue();    int day = today.getDayOfMonth();    Console.log("Year : {}  Month : {}  day : {}", year, month, day);    //Year : 2021  Month : 10  day : 29}

如上代码,返回的是:

Year : 2021  Month : 10  day : 29

判断两个日期是否相等

我们有时会有需求:判断两个日期是否为同。比如签到功能,每次签到前需要判断今天是否已经签到。如果在Ja8之前我们可能会转换成时间戳,通过时间戳作比较。到了Ja8后,我们直接可以使用equals()方法。

如上代码,运行结果为:

today [2021-11-03] 和 date1 [2021-11-03] 是同

LocalDate重写了equals方法。

@Overridepublic boolean equals(Object obj) {    if (this == obj) {        return true;    }    if (obj instanceof LocalDate) {        return compareTo0((LocalDate) obj) == 0;    }    return false;}int compareTo0(LocalDate otherDate) {    int cmp = (year - otherDate.year);    if (cmp == 0) {        cmp = (month - otherDate.month);        if (cmp == 0) {            cmp = (day - otherDate.day);        }    }    return cmp;}

从重写的equals源码来看,是将两个日期的年月日依次作比较。

计算生日

如果我们知道用户的出生日期,我们要判断今天是不是用户的生日。我们就可以使用MonthDay这个类。

如上代码,通过MonthDay可以获取到月和日,然后直接使用equals()方法即可进行判断。

运行结果为:

生日快乐 !!

时间加减

我们经常会计算时间,比如给当前时间加两小时,减两小时等。

上面代码运行结果为:

Time after 2 hours : 16:40:30.997newLocalDateTime after 2 hours : 2021-11-03T16:40:30.997

Ja8的日期不仅可以加小时。秒,月,天,年等都可以加。

如果需要减时间,可以使用minusXXX()方法。

日期大小比较

Ja8可以使用isBefore和isAfter来进行日期之间的比较。

上面代码运行结果为:

Yesterday is day before today

判断闰年

如果需要判断当前年是不是闰年,使用Ja8的isLeapYear非常方便。

@Testpublic void isLeapYear() {    LocalDate today = LocalDate.now();    if (today.isLeapYear()) {        System.out.println("今年是闰年");    } else {        System.out.println("今年不是闰年");    }}

isLeapYear的方法如下

@Overridepublic boolean isLeapYear(long prolepticYear) {    return ((prolepticYear & 3) == 0) && ((prolepticYear % 100) != 0 || (prolepticYear % 400) == 0);}

计算两个日期之间的差

Ja8可以使用Period.between可以获取两个日期之间相差的年月日。

上面代码运行结果

destLocalDate【2018-05-14】到today【2021-11-03】相差了【3】年【5】月【20】天

当然,我们可能还需要计算得更精确,比如计算相差多少天,多少秒等。这时就可以使用ChronoUnit枚举。

ChronoUnit提供了丰富的类别,完全满足各种需求。

今天的文章就写到这里了,如果对你有帮助,欢迎点赞+转发。

版权声明:34楼发布

本文链接:https://www.34l.com/post/17192.html

分享给朋友:

相关文章

好太太抽油烟机推荐,目前行业领先产品

好太太抽油烟机推荐,目前行业领先产品

好太太抽油烟机是目前行业当中比较领先的一个品牌,这个牌子的油烟机一直采用的是国际的先进生产技术,而且技术都是达到国际的标准了。另外好太太油烟机还有不同的研发中心。当收集完消费者的意见以后,好太太油烟机的研发中心就开始进行研发,生产出合乎消费…

好想你花开富贵大礼包多少钱一提?1236g优惠价只需要43.90元

好想你花开富贵大礼包多少钱一提?1236g优惠价只需要43.90元

好想你花开富贵大礼包多少钱一提?好想你,花开富贵礼盒1236g零食大礼包,原价58.90元,领取15元的优惠券减掉之后只需要43.90元,这个价格在近30日内属于最低价,喜欢这款商品的朋友不要错过哦。…

适合年轻人创业项目,投资小又赚钱多的项目推荐

适合年轻人创业项目,投资小又赚钱多的项目推荐

社会在发展,科技在更新,生活也在发生着翻天覆地的变化。但是,唯一不变的是,年轻人创业的心,一直都没有变过。每个时代都会有很多想创业的年轻人,只是每个时代的年轻人创业项目都有所不同,那么,今天我们就说说适合现在年轻人创业的项目。…

用侠肝义胆造句30句

用侠肝义胆造句30句

1、李大哥侠肝义胆,受到四邻的交口称赞。…

女人奋斗励志语录分享10句

女人奋斗励志语录分享10句

1、即便无人喝彩,也要守住自己的人生。每一次失败,都是成功的伏笔;每一次考验,都有一份收获;每一次泪水,都有一次醒悟;每一次磨难,都有生命的财富。每一次伤痛,都是成长的支柱。…