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

问题描述 投票:5回答:2

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

java jodatime week-number
2个回答
5
投票

经过一番搜索,我找到了使用Partial类解决这个问题的方法。

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

1
投票

tl;dr

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 ) ;

About java.time

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

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

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

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展了java.time。该项目是未来可能添加到java.time的试验场。你可能会在这里找到一些有用的类,如IntervalYearWeekYearQuartermore

© www.soinside.com 2019 - 2024. All rights reserved.