获取LocalDate的周数(Java 8)

时间:2014-09-24 08:46:51

标签: java java-8 week-number

我正在尝试使用以下格式获取完整LocalDate的周数:

dd.MM.yyy

我还没有在Java 8 Date API中找到一个返回Week Number的函数,我试图创建一个算法,但它没有用。

2 个答案:

答案 0 :(得分:38)

一个小警告。我还没有对此进行测试,但查看WeekFieldsLocalDate.get的API文档,您应该执行以下操作:

LocalDate date = ...;
// Or use a specific locale, or configure your own rules
WeekFields weekFields = WeekFields.of(Locale.getDefault()); 
int weekNumber = date.get(weekFields.weekOfWeekBasedYear());

答案 1 :(得分:38)

Mark Rotteveel的答案几乎是正确的一个例子,类WeekFields中存在一种混淆潜力(类似的声音方法名称,但偏离直觉的民事用法)。正确的代码需要另一个字段:

LocalDate date = LocalDate.now();
TemporalField woy = WeekFields.of(Locale.getDefault()).weekOfWeekBasedYear(); 
int weekNumber = date.get(woy);

另见关于SO-post的类似辩论,特别是有关@kleopatra答案的讨论和评论。