我試圖獲得與格式的全LOCALDATE的的週數:獲得的LOCALDATE週數(Java的8)
dd.MM.yyy
我還沒有發現在Java 8日期API至極的功能返回星期編號,我試圖創建一個算法,但它沒有工作。
我試圖獲得與格式的全LOCALDATE的的週數:獲得的LOCALDATE週數(Java的8)
dd.MM.yyy
我還沒有發現在Java 8日期API至極的功能返回星期編號,我試圖創建一個算法,但它沒有工作。
一個小警告。我沒有測試過這還,但望着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());
馬克Rotteveel的答案是差不多吧,再一個例子的困惑潛在的有是類WeekFields
(類似的探測方法名稱,但偏離直覺民用)。正確的代碼需要另一個領域:
LocalDate date = LocalDate.now();
TemporalField woy = WeekFields.of(Locale.getDefault()).weekOfWeekBasedYear();
int weekNumber = date.get(woy);
另見本SO-post類似的討論,特別是討論和評論有關@kleopatra的答案。
我已經根據你的更新了我的答案。我沒有在這裏訪問Java 8,所以我不得不猜測(它看起來像我沒有閱讀['WeekFields'](http://docs.oracle.com/javase/8/docs/api /java/time/temporal/WeekFields.html)類文檔密切關聯,因爲它解釋了這種差異。 – 2014-09-24 10:40:37
@MarkRotteveel好的,你現在有了我的讚賞;-)對我來說,名字「weekOfWeekBasedYear」過於技術化,仍然令人討厭。即使是ISO-8601紙也不包含這個術語(它只是使用諸如「日曆周」或「週日期」之類的術語)。 – 2014-09-24 10:51:34
注意Locale.getDefault()。在一些地方(例如加拿大),它可以返回一個星期一開始的一個星期。星期一開始使用「Locale.ISO」數週。 – 2016-01-24 14:12:35
小心Locale.getDefault()。在一些地方(例如加拿大),它可以返回一個星期一開始的一個星期。星期一開始使用「Locale.ISO」數週。 – 2016-01-24 14:12:18
沒有Locale.ISO,但有'WeekFields.ISO' – 2017-04-10 15:16:29