带有kk小时格式的Java SimpleDateFormat问题

时间:2015-05-29 16:17:31

标签: java datetime simpledateformat

据我所知,kk应该会导致数小时到1-24。但是,这种格式化日期的变化似乎存在问题。

以下是示例代码及其输出,以说明我的观点:

Long HOUR = 3600000L;

SimpleDateFormat kkFormat = new SimpleDateFormat("yyyy-MM-dd kk");
SimpleDateFormat HHFormat = new SimpleDateFormat("yyyy-MM-dd HH");

Date date = kkFormat.parse("2015-05-20 21");

for(int i=0; i<5; i++){
    System.out.println(kkFormat.format(new Date(date.getTime() + i * HOUR)));
    System.out.println(HHFormat.format(new Date(date.getTime() + i * HOUR)));
    System.out.println();
}

这会生成以下输出:

2015-05-20 21
2015-05-20 21

2015-05-20 22
2015-05-20 22

2015-05-20 23
2015-05-20 23

2015-05-21 24
2015-05-21 00

2015-05-21 01
2015-05-21 01

我看到的问题是&#34; 2015-05-21 24&#34;该日期不应格式化为&#34; 2015-05-20 24&#34;。

感谢您的澄清。

编辑:在回答Dan Getz时,我尝试创建迭代的文件名如下:

2015052023.txt

2015052024.txt

2015052101.txt

1 个答案:

答案 0 :(得分:1)

在某一天,依赖于时区,与写小时的方式无关。因此,如果日期是21日,则日期是21日,故事结束。将“12am”写为“00”或“24”与此无关。

也许你忘记了一小时有60个不同的分钟?这不仅仅是时钟敲响午夜的第一瞬间,而是我们谈论的整整一个小时,这显然是下一个24小时工作日的一部分。

由于这种模糊性,我个人绝不会在12点之后使用24次。也许你可以编辑你的问题为什么你想用24作为时间?您的数据模型真的是时间戳到毫秒级或类似的吗?或者你希望存储和打印其他东西?