用Joda-Time图书馆代表一年中哪一周的最佳方式是什么?我正在寻找像YearMonth
一样优雅的东西来表示一年中的月份。
答案 0 :(得分:5)
经过一些搜索后,我找到了使用Partial
类解决此问题的解决方案。
Partial yearWeek = new Partial(
new DateTimeFieldType[] {DateTimeFieldType.weekyear(),
DateTimeFieldType.weekOfWeekyear()},
new int[] {year, week});
答案 1 :(得分:1)
org.threeten.extra.YearWeek.of( 2018 , 28 )
Joda-Time项目现在位于maintenance mode,团队建议迁移到java.time课程。
org.threeten.extra.YearWeek
java.time类由ThreeTen-Extra项目扩展。这个项目包括YearWeek
类,正是您所需要的。
请注意“周”可以有很多定义。 one used here由ISO 8601标准定义,其中第1周包含日历年的第一个星期四,星期一每周开始。所以一年有52或53周。基于工作周的年份可能包含从12月底到1月初的上一个/后续日历年的几天。
传递基于周的年份数和周数。
YearWeek yw = YearWeek.of( 2018 , 7 ) ;
通过DayOfWeek
枚举指定星期几,获取该周内的日期。
LocalDate wednesdayOf2018W07 = yw.atDay( DayOfWeek.THURSDAY ) ;
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。