解析12:00时,日历HOUR_OF_DAY返回0

Joh*_*dli 1 java calendar

HOUR_OF_DAY当我解析2014-10-06 12:00:00时,我很惊讶为什么日历在下面的例子中打印0.

我明白如果我打印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 ???????
Run Code Online (Sandbox Code Playgroud)

Jen*_*ens 6

您必须H在模式中使用大写

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)

因为:

h is Hour in am/pm (1-12) 
H Hour in day (0-23) 
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅SimpleDateFormat的文档