用Joda-Time代表一年中的一周

时间:2012-07-31 13:02:40

标签: java jodatime week-number

Joda-Time图书馆代表一年中哪一周的最佳方式是什么?我正在寻找像YearMonth一样优雅的东西来表示一年中的月份。

2 个答案:

答案 0 :(得分:5)

经过一些搜索后,我找到了使用Partial类解决此问题的解决方案。

Partial yearWeek = new Partial(
                   new DateTimeFieldType[] {DateTimeFieldType.weekyear(), 
                                            DateTimeFieldType.weekOfWeekyear()}, 
                                            new int[] {year, week});

答案 1 :(得分:1)

TL;博士

org.threeten.extra.YearWeek.of( 2018 , 28 ) 

java.time

Joda-Time项目现在位于maintenance mode,团队建议迁移到java.time课程。

org.threeten.extra.YearWeek

java.time类由ThreeTen-Extra项目扩展。这个项目包括YearWeek类,正是您所需要的。

请注意“周”可以有很多定义。 one used hereISO 8601标准定义,其中第1周包含日历年的第一个星期四,星期一每周开始。所以一年有52或53周。基于工作周的年份可能包含从12月底到1月初的上一个/后续日历年的几天。

传递基于周的年份数和周数。

YearWeek yw = YearWeek.of( 2018 , 7 ) ;

通过DayOfWeek枚举指定星期几,获取该周内的日期。

LocalDate wednesdayOf2018W07 = yw.atDay( DayOfWeek.THURSDAY ) ;

关于java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore