想要得到2021年7月1日0时0分0秒0毫秒,代码如下:
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2021);
calendar.set(Calendar.MONTH, 6);
calendar.set(Calendar.DATE, 1);
calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
System.out.println(calendar.getTime());
但输出结果和预期不一致:
Thu Jul 01 12:00:00 CST 2021
后来才知道,Calendar.HOUR是12小时制,Calendar.HOUR_OF_DAY才是24小时制,所以代码要改成:
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2021);
calendar.set(Calendar.MONTH, 6);
calendar.set(Calendar.DATE, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
System.out.println(calendar.getTime());
执行结果:
Thu Jul 01 00:00:00 CST 2021
那么,如何使用12小时制输出上面的结果呢?尝试发现,将Calendar.HOUR设置为-12就可以了。
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2021);
calendar.set(Calendar.MONTH, 6);
calendar.set(Calendar.DATE, 1);
calendar.set(Calendar.HOUR, -12);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
System.out.println(calendar.getTime());
执行结果:
Thu Jul 01 00:00:00 CST 2021