我是靠谱客的博主 呆萌发夹,这篇文章主要介绍java创建date对象_在Java中比较Date对象的方式,现在分享给大家,希望可以做个参考。

java创建date对象

让我们面对现实吧,在Java中对Date对象进行补全既复杂又容易出错。 在标准代码中就是这种情况,而在测试代码中也是如此,我们经常需要创建指向特定时间点的Date对象,以供我们进行比较。

过时的好方法

在测试代​​码中,我对使用不赞成使用的方法毫不犹豫。 因此,我使用了旧的Date构造函数来初始化日期:

复制代码
1
Datedate=newDate(112,5,3);

优点:简洁。 缺点:确实不是很直观,您需要掌握Java API的知识才能知道第一个参数是Year减去1900,第二个参数是月数(从1月的0开始)。 得知最后一个参数仅仅是...一个月的某天几乎是一个惊喜。

规范的方式

自Java 1.1以来,Java API中引入了Calendar ,以在时间(日期)和特定引用(日历)中的视图之间分离。 以下代码片段是获得与上述结果相同的幼稚方法。

复制代码
1
2
3
4
Calendarcalendar=Calendar.getInstance(); calendar.set(YEAR,2012); calendar.set(MONTH,JUNE); calendar.set(DAY_OF_MONTH,3);

这不仅更冗长,而且是一个错误:小时,分钟,其余都不为0(取决于日历的确切创建时间),因此在此处使用equals()将返回false 。 这是正确的代码:

复制代码
1
2
3
4
5
6
7
8
Calendarcalendar=Calendar.getInstance(); calendar.set(YEAR,2012); calendar.set(MONTH,JUNE); calendar.set(DAY_OF_MONTH,3); calendar.set(HOUR_OF_DAY,0); calendar.set(MINUTE,0); calendar.set(SECOND,0); calendar.set(MILLISECOND,0);

至少可以说,它破坏了简洁的目的

Apache Commons Lang

自古以来, Apache Commons就提供了不同的实用程序库来帮助用Java开发。 这样的库之一就是Apache Commons Lang ,该库旨在提供值得作为Java API一部分的代码。

在我们的例子中, DateUtils类使我们缩短了前面的代码,同时保持了可读性:

复制代码
1
2
3
4
5
Calendarcalendar=Calendar.getInstance(); calendar.set(YEAR,2012); calendar.set(MONTH,JUNE); calendar.set(DAY_OF_MONTH,3); calendar=DateUtils.truncate(calendar,DAY_OF_MONTH);

更好的是, DateUtils让我们直接处理Date对象,也可以进行以下替代:

复制代码
1
2
3
4
5
Datedate=newDate(); date=DateUtils.setYears(date,2012); date=DateUtils.setMonths(date,JUNE); date=DateUtils.setDays(date,3); date=DateUtils.truncate(date,DAY_OF_MONTH);

请注意,它保留了不变的参数,从而增强了功能编程支持者所珍视的不变性。 优点:我们使用标准的Java API。 缺点:没有。 但是,成熟的DSL会不会感觉更合适?

乔达时间

最终的选择是使用Joda Time ,它旨在替代DateCalendar 。 它还催生了JSR-310 “一种新的和改进的Java日期和时间API”,它应该是Java 8的一部分(最初计划用于Java 7)。 整篇文章(甚至是迷你指南)都可以专门介绍Joda Time。 对于我们当前的关注,以下代码段可以有利地代替我们原来的代码段:

复制代码
1
DateMidnightdm=newDateMidnight(2012,6,3);

回到第一个方框,似乎是:简洁明了。 但是,这些参数不言自明,不需要定期检查JavaDocs以了解如何初始化年份。 此外,类名的语义很清楚。 最后,toDate()方法使我们桥接到标准Java API。

结论

结论是你自己的。 至于我自己,我经常使用Apache Commons Lang,但这些天我倾向于Joda Time。

该代码在这里可以作为Eclipse / Maven项目归档文件获得。

如果您需要处理工作日,最近我们就知道了ObjectLab Kit。 我尚未使用它,欢迎您提供反馈。

翻译自: https://blog.frankel.ch/ways-of-comparing-date-objects-in-java/

java创建date对象

最后

以上就是呆萌发夹最近收集整理的关于java创建date对象_在Java中比较Date对象的方式的全部内容,更多相关java创建date对象_在Java中比较Date对象内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部