用Joda-Time图书馆代表一年中最好的方式是什么?我正在寻找像YearMonth
一样优雅的代表一年中的月份。
经过一番搜索,我找到了使用Partial
类解决这个问题的方法。
Partial yearWeek = new Partial(
new DateTimeFieldType[] {DateTimeFieldType.weekyear(),
DateTimeFieldType.weekOfWeekyear()},
new int[] {year, week});
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。