2014-12-05 5 views
2

Я использую GregorianCalendar для получения значения времени.Григорианский календарь 12 часов 24 часа путаница

public class Tester { 

    public static void main(String[] args) { 
     Calendar cal = GregorianCalendar.getInstance(); 
     cal.set(Calendar.HOUR, 12); 
     cal.set(Calendar.MINUTE, 0); 
     cal.set(Calendar.SECOND, 0); 
     cal.set(Calendar.MILLISECOND, 0); 
     cal.set(Calendar.AM_PM, Calendar.AM); 
     System.out.println(cal.getTimeInMillis() + " " + cal); 
    } 
} 

Когда я использую cal.getTimeInMillis() в запросе MySQL, он интерпретирует время как 12 часов. Правильно ли я понимаю? Или как правильно это сделать?

ответ

3

На самом деле вы должны установить час как 0 за полночь, и 12 для полдня.

Попробуйте Ниже код

cal.set(Calendar.AM_PM, Calendar.AM); 
cal.set(Calendar.HOUR, 0); 

Или второй путь

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.HOUR_OF_DAY, 0); 
+0

Найдено в документации, что возможные значения для Calendar.HOUR: 0 - 11 – Abichellam

0

Комбинация HOUR и AM_PM устанавливает час в 12-часовом режиме. Так, например, ваш usecase:

cal.set(Calendar.HOUR, 12); 
cal.set(Calendar.AM_PM, Calendar.AM); 

Устанавливает час до полудня. Кроме того, вы могли бы использовать HOUR_OF_DAY использовать 24-часовые часы:

cal.set(Calendar.HOUR_OF_DAY, 12); 
+0

Кроме того, что "12 AM" должна быть полночь. – chrylis

Смежные вопросы