2014-12-11 7 views
6

Questo è il mio codice:Come formattare il mese spagnolo nel caso di frase usando SimpleDateFormat?

/* package whatever; // don't place package name! */ 

import java.util.*; 
import java.lang.*; 
import java.io.*; 
import java.text.SimpleDateFormat; 

/* Name of the class has to be "Main" only if the class is public. */ 
class Ideone 
{ 
    public static void main (String[] args) throws java.lang.Exception 
    { 
     SimpleDateFormat date = new SimpleDateFormat("dd-MMM-yyyy", new Locale("es","ar")); 
     System.out.println(date.format(new Date(2014-1900,0,1))); 
    } 
} 

I rendimenti di codice di cui sopra,

01-ene-2014 

Ma, il mese dovrebbe essere nel caso in cui condanna, cioè Ene

Qualcuno mi può dare una mano come posso ottenere 01-Ene-2014 senza usare la sottostringa?

risposta

11

Questo non è un bug.

SimpleDateFormat utilizza i nomi dei mesi e la capitalizzazione secondo le regole locali.

Nei mesi inglese appers con prima lettera maiuscola come nella grammatica inglese governa questo è obbligatorio.

In spagnolo non è la stessa cosa. È obbligatorio utilizzare i nomi dei mesi in minuscolo. Java utilizza le regole locali. Queste regole per lo spagnolo sono definite ad esempio dal RAE (Royal Academy of lingua spagnola)

Inoltre non v'è alcun modo per creare un Locale personalizzato con le proprie regole, ma è possibile utilizzare i DateFormatSymbols classe per sostituire i nomi dei mesi con il tuo proprio.

DateFormatSymbols sym = DateFormatSymbols.getInstance(baseLocale); 
sym.setShortMonths(new String[]{"Ene","Feb","Mar", /* and others */ }); 
new SimpleDateFormat(aPattern, sym); 

esempio completa: http://ideone.com/R7uoW0

Problemi correlati