java.time中的年 - 周日?

时间:2016-09-19 23:07:22

标签: java-time iso8601 week-number

java.time类或其扩展程序ThreeTen-Extra是否支持week dates,特别是{ - 1}}这一年的每周工作日> 2010年1月3日星期日。

对于没有星期几的年份

但是如何表示星期几呢?

1 个答案:

答案 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日