Rumah >Java >javaTutorial >SimpleDateFormat: Mengapa 'Y' Menunjukkan Tahun Berbeza Daripada 'y'?
Dalam SimpleDateFormat, Mengapa 'Y' Mengembalikan 2012 Manakala 'y' Mengembalikan 2011?
Tingkah laku yang anda perhatikan, di mana 'Y' cetakan 2012 dan 'y' cetakan 2011 untuk objek Tarikh yang sama, disebabkan oleh perbezaan halus antara tahun minggu dan tahun kalendar.
Tahun Minggu lwn. Tahun Kalendar
Dalam pemformatan tarikh, 'Y' mewakili tahun minggu, yang sejajar dengan tahun kalendar, tetapi kadangkala boleh berbeza kerana cara minggu dikira. Tahun minggu bermula pada hari Ahad minggu pertama tahun itu, dan berakhir pada hari Sabtu minggu terakhir tahun itu.
Sebaliknya, 'y' mewakili tahun kalendar, iaitu tahun tahun kalendar Gregorian tradisional yang bermula pada 1 Januari.
Dalam contoh anda, objek Tarikh yang anda gunakan jatuh dalam minggu pertama 2012 mengikut tahun minggu pengiraan, tetapi ia jatuh dalam minggu terakhir 2011 mengikut pengiraan tahun kalendar. Hasilnya, 'Y' mencetak 2012 (tahun minggu) dan 'y' mencetak 2011 (tahun kalendar).
Untuk menggambarkan lagi konsep ini, pertimbangkan contoh berikut:
System.out.println(new SimpleDateFormat("Y").format(new Date("December 29, 1997"))); // prints 1998 System.out.println(new SimpleDateFormat("y").format(new Date("December 29, 1997"))); // prints 1997
Dalam kes ini, 'Y' mencetak tahun 1998 kerana tarikh itu jatuh dalam minggu pertama dalam minggu itu, walaupun secara teknikal ia adalah minggu terakhir 1997. 'y', bagaimanapun, mencetak 1997 kerana itu adalah tahun kalendar untuk tarikh yang diberikan.
Atas ialah kandungan terperinci SimpleDateFormat: Mengapa 'Y' Menunjukkan Tahun Berbeza Daripada 'y'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!