2010-07-28 9 views

risposta

4

Le impostazioni internazionali non specificano esplicitamente se i formati di orario sono 12 o 24 ore e preferito Piuttosto, i formati delle date specifici delle impostazioni locali sono gestiti dalle impostazioni internazionali che definiscono direttamente i formati.

  • Se si desidera semplicemente utilizzare il formato ora "locale preferito", basta chiamare uno dei tre DateFormat.getTimeInstance(...) metodi statici, e l'uso qualunque DateFormat restituisce.

  • Se si dispone di un'istanza SimpleDateFormat nelle vostre mani, si potrebbe (se erano pronti a fare una notevole quantità di codifica) chiamare toPattern() e analizzare il modello risultante per vedere se ha usato un 12 o 24 date ore .. o nessuno dei due. Potresti anche modificare il pattern per utilizzare il modulo "altro" e quindi chiamare applyPattern(String) per modificare il formato.

+1

Grazie mille! Dato che voglio davvero stamparlo 'DateFormat.getTimeInstance (DateFormat.SHORT, someLocale)' ha fatto il trucco per me. Certamente non vedo l'ora di una situazione in cui ho bisogno di sapere in realtà quale formato temporale è usato: p. – kolizz

4

Utilizzare la classe java.text.DateFormat per creare l'output corretto del tempo specificato.

partire dalla API:

Per formattare una data per la locale corrente, utilizzare uno dei metodi factory statici:

myString = DateFormat.getDateInstance().format(myDate); 

è sufficiente utilizzare il metodo getTimeInstance() e chiamare il Metodo format() nell'oggetto DateFormat restituito

1

Ho scritto piccola funzione che rileva se locale corrente utilizza 24 o 12 ore:

public static boolean is24HourLocale() { 
    String output = SimpleDateFormat.getTimeInstance(DateFormat.SHORT).format(new Date()); 
    if (output.contains(" AM") || output.contains(" PM")) { 
     return false; 
    } else { 
     return true; 
    } 
} 
+5

Questo non funziona se si dispone di un'impostazione internazionale predefinita diversa, per cui i marcatori AM/PM sono diversi. –

Problemi correlati