2014-10-06 63 views
1

我很驚訝爲什麼日曆HOUR_OF_DAY在下面的示例中打印0,當我解析2014-10-06 12:00:00。日曆HOUR_OF_DAY在解析12:00時返回0

我明白如果HOUR打印0,但不應該HOUR_OF_DAY打印12?

String dateString = "2014-10-06 12:00:00"; 

    Calendar cal = Calendar.getInstance(); 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 

    try 
    { 
    cal.setTime(sdf.parse(dateString)); 
    }catch(Exception e) 
    {} 

    System.out.print(cal.get(Calendar.HOUR_OF_DAY)); // Print 0 ??????? 
+0

爲什麼呢?它正在做它應該做的事情。閱讀http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#HOUR_OF_DAY – 2014-10-06 07:36:00

+0

將您的rtime設置爲24H時鐘 – jhamon 2014-10-06 07:36:13

回答

6

你必須使用大寫H在你的模式

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

因爲:

h is Hour in am/pm (1-12) 
H Hour in day (0-23) 

欲瞭解更多信息,請參閱the documentation of SimpleDateFormat

+0

當然,我忘了它。這有點誤導2014-10-06 13:00:00正常工作。謝謝! – 2014-10-06 08:08:03