栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在JAVA中获取给定日期范围(DateX和DateY)之间的所有星期一和星期四日期的最佳实现是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在JAVA中获取给定日期范围(DateX和DateY)之间的所有星期一和星期四日期的最佳实现是什么?

使用java.time

现代方法使用java.time类。

实例化

List
对象以收集结果。

List<LocalDate> mondays = new ArrayList<>() ;List<LocalDate> wednesdays = new ArrayList<>() ;List<LocalDate> thursdays = new ArrayList<>() ;

确定今天的日期。这需要一个时区,因为在任何给定时刻,全球各地的日期都会有所不同。

LocalDate today = LocalDate.now( ZoneId.of( "America/Montreal" ) ) ;

再增加两个月。java.time类巧妙地处理了较短/较长月份的问题。阅读课程文档,看看您是否同意他们的行为/政策。

LocalDate twoMonthsLater = today.plusMonths( 2 );

循环每个日期,一次增加一天。使用

DayOfWeek
枚举测试其星期几的值。请注意,您可以
switch
在一个
Enum
对象上,但是奇怪的是不能包含其类名前缀。所以我们用
MONDAY
而不是我的首选
DayOfWeek.MONDAY

LocalDate localDate = today ;while ( localDate.isBefore( twoMonthsLater ) ) {    DayOfWeek dow = localDate.getDayOfWeek() ;     switch ( dow ) { case MONDAY:      mondays.add( localDate ) ;     break; case WEDNESDAY:      wednesdays.add( localDate ) ;     break; case THURSDAY:     thursdays.add( localDate ) ;     break; default:      // Ignore any other day-of-week.     break;        }        // Set-up the next loop. Increment by one day at a time.        localDate = localDate.plusDays( 1 ) ;}

转储到控制台。

System.out.println( "From " + today + " to " + twoMonthsLater + ":"  );System.out.println( "mondays: " + mondays ) ;System.out.println( "wednesdays: " + wednesdays ) ;System.out.println( "thursdays: " + thursdays ) ;

看到此代码在IdeOne.com上实时运行。

从2017-10-17到2017-12-17:

星期一:[2017-10-23、2017-10-30、2017-11-06、2017-11-13、2017-11-20、2017-11-27、2017-12-04、2017-12-11
]

周三:[2017-10-18、2017-10-25、2017-11-01、2017-11-08、2017-11-15、2017-11-22、2017-11-29、2017-12-06
,2017-12-13]

星期四:[2017-10-19、2017-10-26、2017-11-02、2017-11-09、2017-11-16、2017-11-23、2017-11-30、2017-12-07
,2017-12-14]


关于java.time

该java.time框架是建立在Java
8和更高版本。这些类取代麻烦的老传统日期时间类,如

java.util.Date
Calendar
,和
SimpleDateFormat

现在处于维护模式的Joda-
Time项目建议迁移到java.time类。

要了解更多信息,请参见Oracle教程。并在Stack
Overflow中搜索许多示例和说明。规格为JSR 310。

在哪里获取java.time类?

  • Java SE 8Java SE 9 和更高版本
    • 内置的
    • 标准Java API的一部分,具有捆绑的实现。
    • Java 9添加了一些次要功能和修复。
  • Java SE 6Java SE 7
    • java.time的许多功能在 ThreeTen- Backport中都被反向移植到Java 6和7 。
  • 安卓系统
    • 所述 ThreeTenABP 项目适应 ThreeTen-反向移植 (上述)为Android特异性。
    • 请参阅 如何使用ThreeTenABP…

ThreeTen-额外
项目与其他类扩展java.time。该项目是将来可能向java.time添加内容的试验场。你可能在这里找到一些有用的类,比如

Interval
YearWeek
YearQuarter
,和更多。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/516038.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号