【发布时间】:2014-11-18 16:23:41
【问题描述】:
我正在尝试使用以下格式获取完整 LocalDate 的周数:
dd.MM.yyy
我在 Java 8 Date API 中没有找到返回周数的函数,我尝试创建一个算法,但它不起作用。
【问题讨论】:
标签: java java-8 week-number
我正在尝试使用以下格式获取完整 LocalDate 的周数:
dd.MM.yyy
我在 Java 8 Date API 中没有找到返回周数的函数,我尝试创建一个算法,但它不起作用。
【问题讨论】:
标签: java java-8 week-number
一个小警告。我还没有对此进行测试,但是查看WeekFields 和LocalDate.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());
【讨论】:
WeekFields.ISO
WeekFields.ISO!
Sunday。尽管如此,如果您为欧洲客户开发应用程序,但您的系统默认本地为 en_US(开发人员经常出现这种情况!),那么如果您没有注意到这一点,您的结果将与预期不同。
Mark Rotteveel 的答案几乎是正确的,这又是一个例子,在 WeekFields 类中存在潜在的混淆(类似的方法名称,但偏离了直观的民间用法)。正确的代码需要另一个字段:
LocalDate date = LocalDate.now();
TemporalField woy = WeekFields.of(Locale.getDefault()).weekOfWeekBasedYear();
int weekNumber = date.get(woy);
另见关于此SO-post 的类似辩论,尤其是关于@kleopatra 答案的讨论和cmets。
【讨论】:
WeekFields 类文档,因为它确实解释了这种差异。
WeekFields.ISO