2011-01-11 16 views
5

Questa sarà probabilmente una domanda stupida, ma non capisco la funzione di data java. Ecco il codice:Domanda semplice su Java SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("hh:mm"); 
Date s = sdf.parse(var); 
Calendar scal = java.util.GregorianCalendar.getInstance(); 
scal.setTime(s); 
Log.w("Time: ", Long.toString(s.getTime())); 

Se var = "10:00" ho "64.800.000".

Se var = "11:00" Ottengo "68400000".

Se var = "12:00" ottengo "28800000".

Se var = "13:00" Ottengo "75600000".

Se var = "14:00" Ottengo "79200000".

Se var = "00:00" Ottengo "28800000".

Cosa succede con 12:00? Perché, quando var = 12: 00 ottengo lo stesso risultato di quando è 00:00? Tutti gli altri risultati sembrano corretti. Ovviamente non capisco la funzione data di Java, ma non riesco a trovare alcuna spiegazione per questo ovunque. Questo sta rovinando il mio calcolatore del tempo.

+0

La tua domanda non è chiara per me. Dove stai impostando var? Dato che stai usando hh: mm che non è il tempo militare, forse è per questo che ricevi 00 per 12. – CoolBeans

risposta

12

Se si desidera utilizzare il tempo di 24 ore, è necessario utilizzare il capitale formato HH:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); 
0

avrei dovuto usare "H" invece di "h". "h" è per il formato am/pm.