teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

不要部分削除

2019/07/07 17:42

投稿

jimbe
jimbe

スコア13355

answer CHANGED
@@ -1,4 +1,4 @@
1
- おそらく YYYY は java.text.SimpleDateFormat で 'YYYY' を使って表示したものと推測します.
1
+ おそらく java.text.SimpleDateFormat で 'YYYY' を使って表示したものと推測します.
2
2
  ですが, ```YYYY.format(calDownerYYYY11.getTime());``` で GregorianCalendar を Date に変換した後に format しているため, GregorianCalendar に設定した setFirstDayOfWeek(Calendar.SUNDAY); 等は SimpleDateFormat に渡らず, 内部で再度 Calendar(GregorianCalendar?) に変換され, デフォルトの値によって 1998年の第1週は1997年12月29日~となっているものと思います.
3
3
 
4
4
  試しに GregorianCalendar の getWeekYear メソッドの値を表示してみれば, 両方とも 1997 となっているのが確認できます.

2

ドキュメントリンク追加

2019/07/07 17:42

投稿

jimbe
jimbe

スコア13355

answer CHANGED
@@ -1,4 +1,9 @@
1
1
  おそらく YYYY は java.text.SimpleDateFormat で 'YYYY' を使って表示したものと推測します.
2
2
  ですが, ```YYYY.format(calDownerYYYY11.getTime());``` で GregorianCalendar を Date に変換した後に format しているため, GregorianCalendar に設定した setFirstDayOfWeek(Calendar.SUNDAY); 等は SimpleDateFormat に渡らず, 内部で再度 Calendar(GregorianCalendar?) に変換され, デフォルトの値によって 1998年の第1週は1997年12月29日~となっているものと思います.
3
3
 
4
- 試しに GregorianCalendar の getWeekYear メソッドの値を表示してみれば, 両方とも 1997 となっているのが確認できます.
4
+ 試しに GregorianCalendar の getWeekYear メソッドの値を表示してみれば, 両方とも 1997 となっているのが確認できます.
5
+
6
+ [GregorianCalendar (Java Platform SE 8)](https://docs.oracle.com/javase/jp/8/docs/api/java/util/GregorianCalendar.html)
7
+ > **年の何週目かを表す値および暦週の基準年**
8
+ (略)
9
+ たとえば、1998年1月1日は木曜日です。getFirstDayOfWeek()がMONDAYでgetMinimalDaysInFirstWeek()が4 (ISO 8601規格に準拠した設定)の場合、1998年の第1週は1997年12月29日に始まり1998年1月4日で終わります。暦年が1997年の最後の3日については、暦週の基準年が1998になります。ただし、getFirstDayOfWeek()がSUNDAYの場合、1998年の第1週は1998年1月4日に始まり1998年1月10日に終わります。1998年の最初の3日間は1997年の第53週に入り、それらの日の暦週の基準年は1997です。

1

表現修正

2019/07/07 17:39

投稿

jimbe
jimbe

スコア13355

answer CHANGED
@@ -1,4 +1,4 @@
1
1
  おそらく YYYY は java.text.SimpleDateFormat で 'YYYY' を使って表示したものと推測します.
2
- ですが, ```YYYY.format(calDownerYYYY11.getTime());``` で GregorianCalendar を Date に変換した後に format しているため, GregorianCalendar に設定した setFirstDayOfWeek(Calendar.SUNDAY); 等は SimpleDateFormat に渡らず, 内部で再度 GregorianCalendar に変換され, デフォルトの値によって 1998年の第1週は1997年12月29日~となっているものと思います.
2
+ ですが, ```YYYY.format(calDownerYYYY11.getTime());``` で GregorianCalendar を Date に変換した後に format しているため, GregorianCalendar に設定した setFirstDayOfWeek(Calendar.SUNDAY); 等は SimpleDateFormat に渡らず, 内部で再度 Calendar(GregorianCalendar?) に変換され, デフォルトの値によって 1998年の第1週は1997年12月29日~となっているものと思います.
3
3
 
4
4
  試しに GregorianCalendar の getWeekYear メソッドの値を表示してみれば, 両方とも 1997 となっているのが確認できます.