2010-06-11 3 views
18

Weiß jemand, ob es eine Methode in Joda Time oder Java selbst gibt, die entweder einen int oder einen String als Argument annimmt, z. 4 oder "4" und gibt den Namen des Monats zurück in Kurzform, d.h. JAN für Januar?Wie bekommt man kurze Monatsnamen in Joda Time?

Ich nehme an, lange Monatsnamen können abgeschnitten und in Großbuchstaben umgewandelt werden.

Antwort

56

Als Antwort auf Jons Antwort können Sie das weiter vereinfachen, indem Sie Jodas direkten Zugriff auf Datetime-Klassen verwenden.

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

Oder 'String month = date.toString (" MMM ", Locale.US)' für ein bestimmtes Gebietsschema. – Pang

15

Ich glaube, "MMM" wird den Monatsnamen in Joda geben ... aber Sie müssten zuerst einen passenden Formatierer aufbauen. Hier ist ein Beispielcode, der "Apr" auf meine Box druckt. (Sie können die entsprechenden locale natürlich angeben.)

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

Vielen Dank. Ich werde das später brauchen. –

+0

Verwendet Google intern Joda-Zeit? –

+3

@mP: Ja, wir tun. –

-2

Meine letzte Antwort über die Verwendung von java.util.Calendar hierfür war ein wenig komplizierter, als es sein mußte. Hier ist eine einfachere Version, obwohl sie immer noch Java 6 oder neuer benötigt.

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

Wir können wie folgt vorgehen:

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

Sie können auch getAsText() Methode für lange Monatsnamen verwenden.

Reference

Verwandte Themen