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

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

34资源网2022-06-09577

我们平时开发日期一般都是使用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提供了丰富的类别,完全满足各种需求。

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

看完文章,还可以扫描下面的二维码下载快手极速版领4元红包

快手极速版二维码

快手极速版新人见面礼

除了扫码领红包之外,大家还可以在快手极速版做签到,看视频,做任务,参与抽奖,邀请好友赚钱)。

邀请两个好友奖最高196元,如下图所示:

快手极速版邀请好友奖励

扫描二维码推送至手机访问。

版权声明:本文由34楼发布,如需转载请注明出处。

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

分享给朋友:

相关文章

30句用喜从天降造句的语句

30句用喜从天降造句的语句

1、让他去泰山旅游,那真是喜从天降。…

​50句名言警句摘抄大全

​50句名言警句摘抄大全

网上的名言警句有很多,相信大家想找的话,一下子就能找到几千上万句这类名言名句,这类名言名句只有短短的几个字,却蕴藏着巨大的人生哲理,有些可能对你的人生有很大帮助。喜欢名言警句的朋友,赶紧看下面小编摘录的50句名言警句吧,一定会对你有所帮助的…

抖音长视频怎么开通?抖音开通长视频的权限分享

抖音长视频怎么开通?抖音开通长视频的权限分享

经常玩抖音的朋友来说开通抖音1分钟长视频已经不是一件难事了。大家都知道抖音默认视频长度为15秒。只有达到一定要求才可以获得长视频权限。但是现在我们发现能发抖音长视频的朋友越来越多了。他们是怎么做到的呢?抖音怎么发长1分钟视频呢?抖音长视频是…

mac地址的作用是什么(理解mac地址的作用实验报告)

mac地址的作用是什么(理解mac地址的作用实验报告)

我们上网时会发现电子设备同时有IP地址和MAC地址,为什么上网会需要两个地址呢?…

华为、苹果,为何“盯”上二手机?

华为、苹果,为何“盯”上二手机?

图源:摄图网 编者按:本文来自微信公众号松果财经(ID:songguocaijing1),创业邦经授权转载 继苹果后,华为近日也正式官宣开启二手手机业务,并表示此举是为了提升电子产品的循环再利用。华为官方承诺所售二手手机均为正品且经过严格把…

微信开放外链,社交想象力有限

微信开放外链,社交想象力有限

编者按:本文来自新熵,创业邦经授权发布,封面图来自摄图网。 作者|古廿 编辑|伊页 网易云音乐上市,丁磊在现场讲了很多的未来,比如元宇宙。但未来是摸不着看不见的,所以愿意放眼未来的人,多半还要立足脚下。 脚下的立足往往来自两个方面:一…