2013-03-12 11 views
6

Ho problemi a cercare di ottenere un tempo per la visualizzazione nel formato 24 ore. Ho ottenuto di visualizzare l'ora in un altro fuso orario, ma non riesco a farlo visualizzare nel formato 24 ore.Come posso visualizzare l'ora nel formato 24 ore utilizzando un TextClock?

<TextClock 
    android:id="@+id/hk_time" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:timeZone="GMT+0800" 
    android:format24Hour="MMM dd, yyyy k:mm" /> 

Inoltre è possibile visualizzare una data utilizzando un TextClock?

risposta

1

Indica se l'ora nel formato 12 o 24 ore dipende dalle impostazioni di sistema. Forse il tuo dispositivo Android o emulatore è impostato sul formato 12 ore. Questo è il motivo per cui il tuo android:format24Hour viene ignorato. Se si desidera mostrare il formato di 24 ore sovrascrivendo le impostazioni di sistema (che non consiglierei), aggiungere android:format12Hour="MMM dd, yyyy k:mm" come un altro attributo.

Tuttavia, si consiglia sempre di visualizzare l'ora e la data in base alle impostazioni di sistema. Se ci sono altri vincoli (ad esempio il layout) nell'app che richiedono una gestione separata della modalità 12 o 24 ore, è possibile verificare dinamicamente l'impostazione nel codice chiamando is12HourModeEnabled() o .

Per la seconda domanda, la docs dicono

TextClock possibile visualizzare la data corrente e/o il tempo come un stringa formattata.

e questo è quello che è in grado di - visualizzare un tempo e data. Se si intende "un'altra data rispetto alla corrente", è necessario attenersi a un semplice TextView e formattare manualmente la stringa della data.

+0

come dovrei cambiarlo per aggiungere nella data? – littledevils326

+0

Non sono sicuro della tua comprensione di una "data", ma se intendi giorno, mese e anno, ciò non è già incluso nel tuo formato "MMM dd, yyyy k: mm" '? – saschoar

9

Se il sistema è in modalità 12 ore, non è necessario scrivere una sottoclasse per ottenere ciò che si desidera. Il JavaDocs dire:

  • Nella modalità 12 ore:
    • Utilizzare il valore restituito da getFormat12Hour() quando non null
    • Altrimenti, utilizzare il valore restituito da getFormat24Hour() quando non nullo
    • Altrimenti, utilizzare un valore predefinito appropriato per le impostazioni dell'utente, come HH: mm

Pertanto, mi sarei aspettato l'ultima riga in questo per fare getFormat12Hour() ritorno null e quindi utilizzare la vostra abitudine getFormat24Hour() formato:

<android.widget.TextClock 
    android:id="@+id/hk_time" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:timeZone="GMT+0800" 
    android:format24Hour="MMM dd, yyyy k:mm" 
    android:format12Hour="@null" /> 

(BTW, come altri hanno detto, formati forzati dovrebbero essere usati con cautela. Se i tuoi utenti volevano un orologio di 24 ore, avrebbero specificato questo nelle loro preferenze di sistema. E le app che impongono ai loro utenti formati data in formato numerico, come MM/dd/yyyy, invitano le valutazioni a una stella (tranne, in questo caso, dagli utenti statunitensi e filippini), quindi è una buona cosa che stai usando MMM! Sarebbe comunque meglio usare getBestDateTimePattern(), che, credo, richiederebbe la sottoclasse TextClock.)

+0

Michael Scheper, mi chiedo come posso rimuovere PM o AM da mostrare nel mio textClock? –

2

invece del formato orario impostato in xml, suggerisco di utilizzare con file java i.e

mTextClock.setFormat24Hour (formato);

0

1 ° domanda:

Ho appena controllato e quando sul dispositivo è impostato:

  • formato 12h (USA, GB) - TextClock è 12h
  • 24 -h formato (Europa) - TextClock è 24h

Come accennato in precedenza, è meglio quando darai la scelta all'utente e non lo costringerai a usare ex. il tuo formato preferito

2 ° domanda:

Sì, lo è. Devi solo usare "android: format12Hour" e/o "android: format24Hour".

android:format12Hour="MMM dd, yyyy" 
android:format24Hour="MMM dd, yyyy" 

MMM significa 3 caratteri per il nome di un mese

gg significa 2 caratteri per un giorno

aaaa mezzi 4 caratteri per un anno

0

il dispositivo utilizzando Formato 12h. Per forzare l'utilizzo del formato 24 ore, scrivo questo:

textClock.setFormat12Hour ("kk: mm");

Problemi correlati