Apabila cuba menukar tarikh daripada satu format kepada format lain menggunakan Java, beberapa pengguna telah menghadapi masalah di mana bulan itu dipaparkan secara tidak betul. Khususnya, apabila menukar daripada format seperti "yyyy-mm-dd" kepada "dd MMMM yyyy", bulan yang terhasil muncul sebagai bulan berikutnya (mis., "01/12/21" menjadi "01 Januari 2021" dan bukannya "01 Disember 2021").
Punca isu ini terletak pada spesifikasi rentetan fromFormat yang salah. Dalam contoh yang disediakan, fromFormat ditakrifkan sebagai "yyyy-mm-dd." Walau bagaimanapun, "mm" dalam kelas Java SimpleDateFormat menandakan minit, bukan bulan. Untuk mewakili bulan dengan betul, penentu format hendaklah "MM."
Untuk menyelesaikan isu ini, kod hendaklah dikemas kini seperti berikut:
String dateStr = "2011-12-15"; String fromFormat = "yyyy-MM-dd"; String toFormat = "dd MMMM yyyy"; try { DateFormat fromFormatter = new SimpleDateFormat(fromFormat); Date date = fromFormatter.parse(dateStr); DateFormat toFormatter = new SimpleDateFormat(toFormat); String result = toFormatter.format(date); System.out.println(result); // Prints "15 December 2011" } catch (ParseException e) { e.printStackTrace(); }
Atas ialah kandungan terperinci Mengapa Penukaran Tarikh Java Saya Menghasilkan Bulan Yang Salah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!