2010-06-11 18 views
18

¿Alguien sabe si hay un método en Joda Time o en Java que toma un int o un String como argumento, p. 4 o "4" y devuelve el nombre del mes en formato corto, es decir, ENE para enero?¿Cómo obtener nombres cortos de meses en Joda Time?

Supongo que los nombres de los meses largos se pueden truncar y convertir a mayúsculas.

Respuesta

56

En respuesta a la respuesta de Jon, puede simplificar aún más eso utilizando el acceso directo de Joda para las clases de fecha y hora.

String month = date.toString("MMM"); 
+1

O 'String month = date.toString (" MMM ", Locale.US)' para una configuración regional específica. – Pang

15

Creo que "MMM" dará el nombre del mes en Joda ... pero primero tendría que crear un formateador apropiado. Aquí hay un código de muestra que imprime "Abr" en mi caja. (Puede especificar la configuración regional correspondiente, por supuesto.)

import org.joda.time.*; 
import org.joda.time.format.*; 

public class Test 
{ 
    public static void main(String[] args) 
    { 
     // Year and day will be ignored 
     LocalDate date = new LocalDate(2010, 4, 1); 
     DateTimeFormatter formatter = DateTimeFormat.forPattern("MMM"); 
     String month = formatter.print(date); 
     System.out.println(month); 
    } 
} 
+0

Muchas gracias. Lo necesitaré más tarde. –

+0

¿Google usa Joda-time internamente? –

+3

@mP: Sí, lo hacemos. –

-2

Mi última respuesta sobre el uso de java.util.Calendar de esto fue un poco más complicado de lo que debía ser. Aquí hay una versión más simple, aunque todavía requiere Java 6 o una versión más nueva.

import java.util.Calendar; 
import java.util.Locale; 

public class Test 
{ 
    public static void main(String[] args) 
    { 
     // Sample usage. 
     // Should be "Apr" in English languages 
     String month = getMonthNameShort(4); 
     System.out.println(month); 
    } 
    /** 
    * @param month Month number 
    * @return The short month name 
    */ 
    public static String getMonthNameShort(int month) 
    { 
     Calendar cal = Calendar.getInstance(); 
     // Calendar numbers months from 0 
     cal.set(Calendar.MONTH, month - 1); 
     return cal.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.getDefault()); 
    } 
} 
0
LocalDateTime fecha_sistema = LocalDateTime.now(); 

// return month value betwen 1 to 12 
int month = fecha_sistema.getMonthValue(); 

// return month name 
String mes = fecha_sistema.getMonth().name(); 

System.out.println("Month" + mes + "/ " + month); 
2

que podemos hacer de la siguiente manera:

DateTime dt = new DateTime(); // current time 
String monthStr = dt.month().getAsShortText(); // gets the month name 

También se puede usar getAsText() método para el nombre de un mes.

Reference

Cuestiones relacionadas