Pertanyaan Cara mendapatkan nama bulan dari Kalender


Apakah ada oneliner untuk mendapatkan nama bulan ketika kita tahu int monthNumber = calendar.get(Calendar.MONTH) ? Atau apa cara termudah?


74
2018-02-12 12:04


asal


Jawaban:


Anda akan mendapatkan cara ini juga.

  String getMonthForInt(int num) {
        String month = "wrong";
        DateFormatSymbols dfs = new DateFormatSymbols();
        String[] months = dfs.getMonths();
        if (num >= 0 && num <= 11 ) {
            month = months[num];
        }
        return month;
    }

72
2018-02-12 12:09



Anda dapat mencapainya menggunakan SimpleDateFormat, yang dimaksudkan untuk memformat tanggal dan waktu.

Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));

147
2018-02-12 12:05



Sesederhana ini

mCalendar = Calendar.getInstance();    
String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());

56
2018-04-24 10:42



Ini adalah solusi yang saya dapatkan untuk proyek kelas:

public static String theMonth(int month){
    String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    return monthNames[month];
}

Nomor yang Anda berikan berasal dari a Calendar.MONTH panggilan.


40
2017-10-31 01:14



jika Anda memiliki antarmuka multi-bahasa, Anda dapat menggunakan getDisplayName untuk menampilkan nama bulan dengan kontrol menampilkan bahasa.

di sini adalah contoh menampilkan nama bulan dalam bahasa inggris, frensh, arab dan arab di negara tertentu seperti "Syria":

    Calendar c = Calendar.getInstance();
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH ) );
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.FRANCE ) );
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, new Locale("ar") ) );
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, new Locale("ar", "SY") ) );
    System.out.println(c.getTime().toString());

hasilnya adalah:

  January
  janvier
  يناير
  كانون الثاني
  Sat Jan 17 19:31:30 EET 2015

30
2018-01-17 17:40



Joda-Time

Bagaimana kalau menggunakan Joda-Time. Ini API waktu-waktu yang jauh lebih baik untuk bekerja dengan (Dan January berarti januari di sini. Ini tidak seperti Kalender, yang menggunakan 0-based indeks untuk bulan).

Kamu dapat memakai AbstractDateTime#toString( pattern ) metode untuk memformat tanggal dalam format tertentu:

DateTime date = DateTime.now();
String month = date.toString("MMM");

Nama Bulan Dari Nomor

Jika Anda ingin nama bulan untuk nomor bulan tertentu, Anda dapat melakukannya seperti ini:

int month = 3;
String monthName = DateTime.now().withMonthOfYear(month).toString("MMM");

Melokalisir

Pendekatan di atas menggunakan Lokal default JVM Anda saat ini untuk bahasa nama bulan. Anda ingin menetapkan objek Lokal sebagai gantinya.

String month = date.toString( "MMM", Locale.CANADA_FRENCH );

10
2018-02-12 12:10



SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );

Untuk beberapa bahasa (misalnya bahasa Rusia) ini adalah satu-satunya cara yang benar untuk mendapatkan nama bulan yang berdiri sendiri.

Ini yang Anda dapatkan, jika Anda menggunakannya getDisplayName dari Calendar atau DateFormatSymbols untuk Januari:

января (yang benar untuk string tanggal lengkap: "10 menit, 2014")

tetapi dalam kasus nama bulan yang berdiri sendiri yang Anda harapkan:

январь


9
2017-08-15 15:42