当前位置:首页 > 谈天说地 > 正文内容

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

34资源网2022年06月09日 09:14362

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

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

看完文章,还可以用支付宝扫描下面的二维码领取一个支付宝红包,目前可领1-88元不等

支付宝红包二维码

除了扫码可以领取之外,大家还可以(复制 720087999 打开✔支付宝✔去搜索, h`o`n.g.包哪里来,动动手指就能领)。

看下图所示是好多参与这次活动领取红包的朋友:

支付宝红包

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

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

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

分享给朋友:

相关文章

用侠肝义胆造句30句
用侠肝义胆造句30句

1、李大哥侠肝义胆,受到四邻的交口称赞。2、村民见二位神仙眷侣侠肝义胆,救民水火,却落得个这般凄惨的下场,当下无人不落下泪来。3、还有蛊族毒宗的唯一传人,药宗里的第一才女,一朝沦落风尘的倾城之貌,侠肝义胆的流氓与巾帼,皇家琴师,断袖城主,独...

养成良好的习惯,做一名有品位的教师
养成良好的习惯,做一名有品位的教师

陶行知先生说:“思想决定行动,行动养成习惯,习惯形成品质,品质决定命运”。最近从网上读了《影响教师一生的100个好习惯》一书,不禁对陶先生这句话有了更深刻的领悟和理解。阅读本书带给我的不仅是享受,更多的则是生活的引领,智慧的传递和方法的教授...

30句至理名言,句句都非常经典
30句至理名言,句句都非常经典

1、命里有时终须有,命里无时莫强求。谋事在人,成事在天。很多事情是人力不能勉强的,随缘就好。2、忍得一时之气,免得百日之忧。在情绪冲动的情况下,做出的决策伤人伤己,总是让人追悔莫及。能忍住自己的脾气,是一种修养,更是一种能力。3、是非终日有...

Hey,Siri 背后,隐藏着一个大问题
Hey,Siri 背后,隐藏着一个大问题

编者按:本文来自腾讯研究院(cyberlawrc),作者:白鸽,创业邦经授权发布,封面图来自图虫。 豆瓣平台上有一个名叫“人机之恋”的小组,组内成员分享的大部分内容,都是一款聊天软件 Replika 的使用心得。通过这款软件,用户可以与...

物联网应用案例分析(物联网技术的应用案例)
物联网应用案例分析(物联网技术的应用案例)

近日,工信部公布了44项移动物联网应用案例入选名单。 案例主要面向三大重点方向: 一是围绕工业制造、仓储物流、智慧农业、智慧医疗等领域的产业数字化应用; 二是围绕智能计量、消防烟感、共享单车、环保监测等领域的治理智能化应用; 三是围绕...

前程无忧、BOSS直聘、猎聘“抢”Z世代

仅用于查找职位、投递简历的互联网招聘平台已成为过去式,可精准匹配工作、学习技能,又能用来社交的互联网招聘平台越来越受欢迎。在市场需求推动下,互联网招聘平台开拓多元化服务,成为集求职、培训、社交为一体的服务平台,互联网招聘行业规模随之扩大。...