java.time类或其扩展程序ThreeTen-Extra是否支持week dates,特别是{ - 1}}这一年的每周工作日> 2010年1月3日星期日。
对于没有星期几的年份:
IsoFields
来处理这一周的问题。 YearWeek
类。 但是如何表示星期几呢?
答案 0 :(得分:1)
请参阅IsoFields课程,该课程允许查询以周为基础的年份和基于周的年份的周数。还有一个专用的格式化程序ISO_WEEK_DATE。
DayOfWeek
枚号告诉您星期一至星期日的星期几,1-7。请致电LocalDate::getDayOfWeek
,然后致电DayOfWeek::getValue
。
LocalDate ld = LocalDate.now( ZoneId.of( "America/Montreal" ) ) ;
2016年12月7日
int weekOfWeekBasedYear = ld.get( IsoFields.WEEK_OF_WEEK_BASED_YEAR ) ;
int yearOfWeekBasedYear = ld.get( IsoFields.WEEK_BASED_YEAR ) ;
int dayOfWeek = ld.getDayOfWeek().getValue();
使用这些部分在标准ISO 8601 week date formats中构建字符串。
String yearWeek = yearOfWeekBasedYear + "-W" + String.format( "%02d", weekOfWeekBasedYear ) ;
2016-W49
String yearWeekDay = yearWeek + "-" + dayOfWeek ;
2016-W49-3
或者,让预定义的DateTimeFormatter.ISO_WEEK_DATE
完成工作。
String ywd = ld.format( DateTimeFormatter.ISO_WEEK_DATE );
2016-W49-3
同样的格式化程序可以解析这些标准字符串。
String input = "2016-W49-3" ;
LocalDate ldParsed = LocalDate.parse( input , DateTimeFormatter.ISO_WEEK_DATE ) ;
2016年12月7日