Apakah ada satu cara untuk mendapatkan nama bulan yang kita tahu int monthNumber = calendar.get(Calendar.MONTH)
? Atau apakah cara termudah?
Apakah ada satu cara untuk mendapatkan nama bulan yang kita tahu int monthNumber = calendar.get(Calendar.MONTH)
? Atau apakah cara termudah?
Jawaban:
Anda juga akan mendapatkan cara ini.
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;
}
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()));
Sesederhana ini
mCalendar = Calendar.getInstance();
String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
октября
alih-alih Октябрь
, yang mungkin Anda harapkan.
Ini adalah solusi yang saya buat 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 Calendar.MONTH
panggilan.
new SimpleDateFormat("MMMM").format(cal.getTime());
jika Anda memiliki antarmuka multi-bahasa, Anda dapat menggunakan getDisplayName untuk menampilkan nama bulan dengan kontrol bahasa tampilan.
berikut 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
SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );
Untuk beberapa bahasa (misalnya Rusia), ini adalah satu-satunya cara yang benar untuk mendapatkan nama bulan yang berdiri sendiri.
Inilah yang Anda dapatkan, jika Anda gunakan getDisplayName
dari Calendar
atau DateFormatSymbols
untuk Januari:
января (yang benar untuk string tanggal lengkap: " 10 января, 2014 ")
tetapi dalam kasus nama bulan yang berdiri sendiri, Anda akan mengharapkan:
январь
Bagaimana kalau menggunakan Joda-Time . Ini adalah API waktu-tanggal yang jauh lebih baik untuk digunakan (Dan January
artinya januari di sini. Ini tidak seperti Kalender, yang menggunakan 0-based
indeks selama berbulan-bulan).
Anda dapat menggunakan AbstractDateTime#toString( pattern )
metode untuk memformat tanggal dalam format yang ditentukan:
DateTime date = DateTime.now();
String month = date.toString("MMM");
Jika Anda menginginkan nama bulan untuk nomor bulan tertentu, Anda dapat melakukannya seperti ini:
int month = 3;
String monthName = DateTime.now().withMonthOfYear(month).toString("MMM");
Pendekatan di atas menggunakan Lokal default JVM Anda saat ini untuk bahasa nama bulan. Anda ingin menentukan objek Lokal sebagai gantinya.
String month = date.toString( "MMM", Locale.CANADA_FRENCH );
SimpleDateFormat
danDate
Month::getDisplayName
Sejak Java 8, gunakan Month
enum. The getDisplayName
Metode otomatis melokalisasi nama bulan.
Lulus:
TextStyle
untuk menentukan seberapa panjang atau seberapa disingkat.Locale
untuk menentukan bahasa manusia yang digunakan dalam terjemahan, dan norma budaya yang digunakan untuk singkatan, tanda baca, dll.Contoh:
public static String getMonthStandaloneName(Month month) {
return month.getDisplayName(
TextStyle.FULL_STANDALONE,
Locale.getDefault()
);
}
Ini mungkin pertanyaan lama, tapi sebagai satu kalimat untuk mendapatkan nama bulan ketika kita mengetahui indeks, saya menggunakan
String month = new DateFormatSymbols().getMonths()[monthNumber - 1];
atau untuk nama pendek
String month = new DateFormatSymbols().getShortMonths()[monthNumber - 1];
Perlu diketahui bahwa Anda monthNumber
mulai menghitung dari 1 sedangkan salah satu metode di atas mengembalikan larik sehingga Anda perlu mulai menghitung dari 0.
Kode ini memiliki dukungan bahasa. Saya telah menggunakannya di Aplikasi Android.
String[] mons = new DateFormatSymbols().getShortMonths();//Jan,Feb,Mar,...
String[] months = new DateFormatSymbols().getMonths();//January,Februaty,March,...
Saya menemukan ini jauh lebih mudah ( https://docs.oracle.com/javase/tutorial/datetime/iso/enum.html )
private void getCalendarMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
Month month = Month.of(calendar.get(Calendar.MONTH));
Locale locale = Locale.getDefault();
System.out.println(month.getDisplayName(TextStyle.FULL, locale));
System.out.println(month.getDisplayName(TextStyle.NARROW, locale));
System.out.println(month.getDisplayName(TextStyle.SHORT, locale));
}
Month
memulai indeksnya dengan Januari = 1, sedangkan Kalender dimulai dengan Januari = 0? Tidak akan Month.of(calendar.get(Calendar.MONTH));
gagal dalam kasus januari?
Satu arah:
Kami memiliki Month
API di Java ( java.time.Month
). Kita bisa mendapatkannya dengan menggunakanMonth.of(month);
Di sini, Month
indeks diindeks sebagai angka sehingga Anda dapat memberikan Month.JANUARY
atau memberikan indeks dalam API di atas seperti 1, 2, 3, 4.
Cara kedua:
ZonedDateTime.now().getMonth();
Ini tersedia di java.time.ZonedDateTime
.
Saya membuat ekstensi kotlin berdasarkan tanggapan dalam topik ini dan menggunakan jawaban DateFormatSymbols Anda mendapatkan tanggapan yang dilokalkan.
fun Date.toCalendar(): Calendar {
val calendar = Calendar.getInstance()
calendar.time = this
return calendar
}
fun Date.getMonthName(): String {
val month = toCalendar()[Calendar.MONTH]
val dfs = DateFormatSymbols()
val months = dfs.months
return months[month]
}
Ini berhasil untuk saya
import java.text.SimpleDateFormat;
import java.util.Calendar;
Calendar cal = Calendar.getInstance();
String currentdate=new SimpleDateFormat("dd-MMM").format(cal.getTime());
DateFormat date = new SimpleDateFormat("dd/MMM/yyyy");
Date date1 = new Date();
System.out.println(date.format(date1));
Ini mengembalikan nama bahasa Inggris bulan ini. 04 mengembalikan APRIL dan seterusnya.
String englishMonth (int month){
return Month.of(month);
}
Month
atau menerapkan toString
ke hasil sebelum mengembalikannya.
dari dokumen java SimpleDateFormat:
* <td><code>"yyyyy.MMMMM.dd GGG hh:mm aaa"</code>
* <td><code>02001.July.04 AD 12:08 PM</code>
* <td><code>"EEE, d MMM yyyy HH:mm:ss Z"</code>
* <td><code>Wed, 4 Jul 2001 12:08:56 -0700</code>