¿Hay una línea para obtener el nombre del mes en el que lo sabemos int monthNumber = calendar.get(Calendar.MONTH)? ¿O cuál es la forma más sencilla?
¿Hay una línea para obtener el nombre del mes en el que lo sabemos int monthNumber = calendar.get(Calendar.MONTH)? ¿O cuál es la forma más sencilla?
Respuestas:
También obtendrá de esta manera.
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;
}
puede lograrlo usando SimpleDateFormat , que está destinado a formatear la fecha y la hora.
Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));
Tan simple como esto
mCalendar = Calendar.getInstance();
String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
октябряlugar de Октябрьlo que probablemente espera.
Esta es la solución que se me ocurrió para un proyecto de clase:
public static String theMonth(int month){
String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
return monthNames[month];
}
El número que ingresa proviene de una Calendar.MONTHllamada.
new SimpleDateFormat("MMMM").format(cal.getTime());
Si tiene una interfaz en varios idiomas, puede usar getDisplayName para mostrar el nombre del mes con control del idioma de visualización.
aquí hay un ejemplo de cómo mostrar el nombre del mes en inglés, francés, árabe y árabe en un país específico como "Siria":
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());
el resultado es:
January
janvier
يناير
كانون الثاني
Sat Jan 17 19:31:30 EET 2015
SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );
Para algunos idiomas (por ejemplo, ruso), esta es la única forma correcta de obtener los nombres de los meses independientes.
Esto es lo que obtiene, si usa getDisplayNamedesde el Calendaro DateFormatSymbolspara enero:
января (que es correcta para una cadena de fecha completa: " 10 января, 2014 ")
pero en el caso de un nombre de mes independiente, esperaría:
январь
¿Qué tal usar Joda-Time ? Es una API de fecha y hora mucho mejor para trabajar (y Januarysignifica enero aquí. No es como Calendar, que usa0-based índices durante meses).
Puede usar el AbstractDateTime#toString( pattern )método para formatear la fecha en el formato especificado:
DateTime date = DateTime.now();
String month = date.toString("MMM");
Si desea un nombre de mes para un número de mes en particular, puede hacerlo así:
int month = 3;
String monthName = DateTime.now().withMonthOfYear(month).toString("MMM");
El enfoque anterior utiliza la configuración regional predeterminada actual de su JVM para el idioma del nombre del mes. En su lugar, desea especificar un objeto Locale.
String month = date.toString( "MMM", Locale.CANADA_FRENCH );
SimpleDateFormatyDate
Month::getDisplayNameDesde Java 8, use la Monthenumeración. El getDisplayNamemétodo localiza automáticamente el nombre del mes.
Pasar:
TextStyle para determinar la duración o la abreviatura.Localepara especificar el lenguaje humano utilizado en la traducción y las normas culturales utilizadas para abreviatura, puntuación, etc.Ejemplo:
public static String getMonthStandaloneName(Month month) {
return month.getDisplayName(
TextStyle.FULL_STANDALONE,
Locale.getDefault()
);
}
Puede que sea una pregunta antigua, pero como una línea para obtener el nombre del mes en el que conocemos los índices, utilicé
String month = new DateFormatSymbols().getMonths()[monthNumber - 1];
o para nombres cortos
String month = new DateFormatSymbols().getShortMonths()[monthNumber - 1];
Tenga en cuenta que monthNumbercomienza a contar desde 1, mientras que cualquiera de los métodos anteriores devuelve una matriz, por lo que debe comenzar a contar desde 0.
Este código tiene soporte de idioma. Los había usado en la aplicación de Android.
String[] mons = new DateFormatSymbols().getShortMonths();//Jan,Feb,Mar,...
String[] months = new DateFormatSymbols().getMonths();//January,Februaty,March,...
Encontré esto mucho más fácil ( 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));
}
Monthcomienza su índice con enero = 1, mientras que el calendario comienza con enero = 0? ¿No Month.of(calendar.get(Calendar.MONTH));fallaría en el caso de enero?
De una sola mano:
Tenemos MonthAPI en Java ( java.time.Month). Podemos conseguirlo usandoMonth.of(month);
Aquí, Monthestán indexados como números, por lo que puede proporcionar Month.JANUARYo proporcionar un índice en la API anterior, como 1, 2, 3, 4.
Segunda forma:
ZonedDateTime.now().getMonth();
Esto está disponible en java.time.ZonedDateTime.
Creé una extensión de kotlin basada en las respuestas de este tema y, al usar las respuestas de DateFormatSymbols, obtienes una respuesta localizada.
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]
}
Esto funcionó para mi
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));
Devuelve el nombre del mes en inglés. 04 devuelve ABRIL y así sucesivamente.
String englishMonth (int month){
return Month.of(month);
}
Montho aplicar toStringal resultado antes de devolverlo.
del documento 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>