Apabila memaparkan hari dalam bulan, selalunya wajar untuk memasukkan penunjuk ordinal untuk menandakan sama ada ia adalah "1", "2nd", "3rd", dll. Walaupun SimpleDateFormat Java menyediakan cara untuk memformat hari berangka bulan ("d"), ia tidak termasuk penunjuk ordinal.
Untuk memformatkan hari dalam bulan dengan penunjuk ordinal, anda boleh menggunakan fungsi tersuai atau bergantung pada perpustakaan luar. Salah satu perpustakaan tersebut ialah Google Guava, yang menawarkan kaedah yang dipanggil getDayOfMonthSuffix.
import static com.google.common.base.Preconditions.*; String getDayOfMonthSuffix(final int n) { checkArgument(n >= 1 && n <= 31, "illegal day of month: " + n); if (n >= 11 && n <= 13) { return "th"; } switch (n % 10) { case 1: return "st"; case 2: return "nd"; case 3: return "rd"; default: return "th"; } }
Dalam contoh ini, getDayOfMonthSuffix mengambil satu hari dalam sebulan sebagai input dan mengembalikan penunjuk ordinal yang sepadan. Ia mengendalikan kes khas apabila hari berakhir dengan "11", "12", atau "13" untuk mengembalikan "th" dan bukannya "st", "nd", atau "rd".
Menggunakan kaedah ini , anda kini boleh memformatkan hari dalam bulan dengan penunjuk ordinal:
SimpleDateFormat sdf = new SimpleDateFormat("MMMMM d"); int dayOfMonth = 21; String formattedDate = sdf.format(new Date()) + getDayOfMonthSuffix(dayOfMonth); System.out.println(formattedDate); // prints "January 21st"
Perhatikan bahawa adalah penting untuk mempertimbangkan kes sudut dan situasi istimewa apabila memformat hari dalam bulan dengan penunjuk ordinal. Sebagai contoh, jadual yang disebut dalam soalan mengandungi ralat untuk hari yang berakhir dengan "7tn", "17tn", dan "27tn". Untuk mengelakkan pepijat sedemikian, anda dinasihatkan untuk menggunakan kod tersuai yang mantap atau bergantung pada perpustakaan yang telah diuji dengan baik.
Atas ialah kandungan terperinci Bagaimana untuk Memformat Tarikh dengan Penunjuk Ordinal (1, 2, 3) di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!