2011-01-11 31 views
5

To będzie prawdopodobnie głupie pytanie, ale nie rozumiem funkcji daty java. Oto kod:Proste pytanie o 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())); 

Jeśli var = "10:00" otrzymuję "64800000".

Jeśli var = "11:00" otrzymam "68400000".

Jeśli var = "12:00" otrzymam "28800000".

Jeśli var = "13:00" otrzymam "75600000".

Jeśli var = "14:00" otrzymam "79200000".

Jeśli var = "00:00" otrzymam "28800000".

Co się dzieje z 12:00? Dlaczego, gdy var = 12: 00 otrzymam taki sam wynik, jak gdy jest 00:00? Wszystkie pozostałe wyniki wydają się poprawne. Oczywiście nie rozumiem funkcji daty java, ale nie mogę znaleźć nigdzie tego wyjaśnienia. To podkręca mój kalkulator czasu.

+0

Twoje pytanie nie jest dla mnie jasne. Gdzie ustawiasz var? Ponieważ używasz hh: mm, który nie jest czasem militarnym - więc być może dlatego dostajesz 00 za 12. – CoolBeans

Odpowiedz

12

Jeśli chcesz wykorzystać czas 24-godzinny, trzeba użyć kapitału formacie GG:

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

powinny Użyłem „H” zamiast „h”. "h" jest dla formatu AM/PM.