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.MONTH
aramadan 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 getDisplayName
dan Calendar
veya DateFormatSymbols
Ocak 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 January
Ocak 0-based
ayı 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 );
SimpleDateFormat
veDate
Month::getDisplayName
Java 8'den beri, Month
numaralandırmayı kullanın . getDisplayName
Yö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];
monthNumber
Yukarı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));
}
Month
Ocak = 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 Month
Java API ( java.time.Month
). Kullanarak alabilirizMonth.of(month);
Burada, Month
sayılar olarak dizine eklenir, böylece Month.JANUARY
yukarı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);
}
Month
başvurmanız toString
gerekir.
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>