【問題解決】YYY-MM-ddを用いた時間変換問題
1512 ワード
テストロジック:は、問題のある の2つの日付フォーマットを作成します.はそれぞれ2つの異なる日付をフォーマットします:2020年12月26日(土)、2020年12月27日(日) 具体的なコードは以下の通りです.
テストを走ると、出力結果は次のように表示されます. 2020年12月26日(土)、両方のフォーマットが正しい 2020年12月27日(日)、 になりました
問題の原因
なぜ
YYYYはweek-based-yearなので、当日の週が属する年は、週が日曜日から土曜日が終わり、今週が年越しであれば、今週が来年に入るということです.
だから2020年12月27日にこのような表現の下で2021年になりました.
yyyyを使うと2020年になります.(海外クリスマス12月25日以降は新年度)
YYYY-MM-dd
と正しい使い方yyyy-MM-dd
public class Tests {
@Test
public void test() throws Exception {
SimpleDateFormat df1 = new SimpleDateFormat("YYYY-MM-dd");
SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
// 2020 12 26
c.set(Calendar.DATE, 26);
System.out.println("YYYY-MM-dd = " + df1.format(c.getTime()));
System.out.println("yyyy-MM-dd = " + df2.format(c.getTime()));
//
System.out.println("========================");
// 2020 12 27
c.add(Calendar.DATE, 1);
System.out.println("YYYY-MM-dd = " + df1.format(c.getTime()));
System.out.println("yyyy-MM-dd = " + df2.format(c.getTime()));
}
}
テストを走ると、出力結果は次のように表示されます.
YYYY-MM-dd = 2020-12-26
yyyy-MM-dd = 2020-12-26
========================
YYYY-MM-dd = 2021-12-27
yyyy-MM-dd = 2020-12-27
YYYY-MM-dd
に問題が発生し、年は2021年問題の原因
なぜ
YYYY-MM-dd
が2020年12月27日に2021年になるのでしょうか.YYYYはweek-based-yearなので、当日の週が属する年は、週が日曜日から土曜日が終わり、今週が年越しであれば、今週が来年に入るということです.
だから2020年12月27日にこのような表現の下で2021年になりました.
yyyyを使うと2020年になります.(海外クリスマス12月25日以降は新年度)