Bildiğimiz zaman ayın adını almak için tek bir rehber var mı
int monthNumber = calendar.get(Calendar.MONTH)
Veya en kolay yol nedir?
Bildiğimiz zaman ayın adını almak için tek bir rehber var mı
int monthNumber = calendar.get(Calendar.MONTH)
Veya en kolay yol nedir?
Yanıtlar:
Bu şekilde de alacaksın.
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;
}
Bunu tarih ve saatleri biçimlendirmek amacıyla SimpleDateFormat kullanarak elde edebilirsiniz .
Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));
Bu kadar basit
mCalendar = Calendar.getInstance();
String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
октябряyerine Октябрьmuhtemelen bekledikleri.
Bir sınıf projesi için bulduğum çözüm bu:
public static String theMonth(int month){
String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
return monthNames[month];
}
Verdiğiniz numara bir Calendar.MONTHaramadan gelir .
new SimpleDateFormat("MMMM").format(cal.getTime());
Eğer çoklu dil arayüzüne sahipseniz, dilin görüntülenmesini kontrol ederek ayın adını görüntülemek için getDisplayName kullanabilirsiniz.
Aşağıda, "Suriye" gibi belirli bir ülkede ay adının İngilizce, frensh, arapça ve arapça görüntülenmesi için bir örnek verilmiştir:
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());
sonuç:
January
janvier
يناير
كانون الثاني
Sat Jan 17 19:31:30 EET 2015
SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );
Bazı diller için (örneğin Rusça), bağımsız ay adlarını almanın tek doğru yolu budur.
Bu kullanırsanız, elde ediyoruz getDisplayNamedan Calendarveya DateFormatSymbolsOcak için:
января (tam bir tarih dizesi için doğrudur: " 10 января, 2014 ")
ancak bağımsız bir ay adı olması durumunda şunları beklersiniz:
январь
Joda-Time kullanmaya ne dersiniz ? Bu, çalışmak için çok daha iyi bir tarih-saat API'sıdır (Ve JanuaryOcak 0-basedayı anlamına gelir. Aylarca dizini kullanan Takvim'e benzemez ).
AbstractDateTime#toString( pattern )Tarihi belirtilen formatta formatlamak için yöntemi kullanabilirsiniz :
DateTime date = DateTime.now();
String month = date.toString("MMM");
Belirli bir ay numarası için ay adı istiyorsanız, bunu şu şekilde yapabilirsiniz:
int month = 3;
String monthName = DateTime.now().withMonthOfYear(month).toString("MMM");
Yukarıdaki yaklaşım, ay adının dili için JVM'nizin mevcut varsayılan Yerel Ayarını kullanır. Bunun yerine bir Yerel Ayar nesnesi belirtmek istiyorsunuz.
String month = date.toString( "MMM", Locale.CANADA_FRENCH );
SimpleDateFormatveDate
Month::getDisplayNameJava 8'den beri, Monthnumaralandırmayı kullanın . getDisplayNameYöntem otomatik ayın adını lokalize.
Geçmek:
TextStyle , ne kadar uzun veya ne kadar kısaltılacağını belirlemek için.Localeçeviride kullanılan insan dilini ve kısaltma, noktalama vb. İçin kullanılan kültürel normları belirtmek için.Misal:
public static String getMonthStandaloneName(Month month) {
return month.getDisplayName(
TextStyle.FULL_STANDALONE,
Locale.getDefault()
);
}
Bu eski bir soru olabilir, ancak endeksleri bildiğimizde ayın adını almak için tek satırlık olarak kullandım
String month = new DateFormatSymbols().getMonths()[monthNumber - 1];
veya kısa isimler için
String month = new DateFormatSymbols().getShortMonths()[monthNumber - 1];
monthNumberYukarıdaki yöntemlerden herhangi biri bir dizi döndürürken, 1'den itibaren saymaya başladığınızın farkında olun , bu nedenle 0'dan saymaya başlamanız gerekir.
Bu kodun dil desteği vardır. Bunları Android Uygulamasında kullanmıştım.
String[] mons = new DateFormatSymbols().getShortMonths();//Jan,Feb,Mar,...
String[] months = new DateFormatSymbols().getMonths();//January,Februaty,March,...
Bunu çok daha kolay buldum ( 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));
}
MonthOcak = 0 ile Takvim başlar oysa Ocak = 1 ile dizinini başlar? Month.of(calendar.get(Calendar.MONTH));Ocak durumunda başarısız olmaz mıydı ?
Tek yön:
Biz MonthJava API ( java.time.Month). Kullanarak alabilirizMonth.of(month);
Burada, Monthsayılar olarak dizine eklenir, böylece Month.JANUARYyukarıdaki API'de 1, 2, 3, 4 gibi bir dizin sağlayabilir veya sağlayabilirsiniz.
İkinci yol:
ZonedDateTime.now().getMonth();
Bu mevcuttur java.time.ZonedDateTime.
Bu konudaki yanıtlara göre bir kotlin uzantısı oluşturdum ve DateFormatSymbols yanıtlarını kullanarak yerelleştirilmiş bir yanıt alıyorsunuz.
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]
}
Bu benim için çalıştı
import java.text.SimpleDateFormat;
import java.util.Calendar;
Calendar cal = Calendar.getInstance();
String currentdate=new SimpleDateFormat("dd-MMM").format(cal.getTime());
Calender cal = Calendar.getInstance(Locale.ENGLISH)
String[] mons = new DateFormatSymbols(Locale.ENGLISH).getShortMonths();
int m = cal.get(Calendar.MONTH);
String mName = mons[m];
DateFormat date = new SimpleDateFormat("dd/MMM/yyyy");
Date date1 = new Date();
System.out.println(date.format(date1));
Ayın İngilizce adını döndürür. 04 NİSAN değerini döndürür ve böyle devam eder.
String englishMonth (int month){
return Month.of(month);
}
Monthbaşvurmanız toStringgerekir.
SimpleDateFormat java belgesinden:
* <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>