Java SimpleDateFormat问题与kk小时格式



我理解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

我看到的问题是"2015-05-21 24"这个日期不应该被格式化为"2015-05-20 24"。

谢谢你的解释。

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

2015052023. txt

2015052024. txt

2015052101. txt

今天是几号,虽然取决于时区,但与小时的书写方式无关。如果日期是21号,那就是21号,就这么定了。将"12am"写成"00"或"24"与此无关。

也许你忘记了一个小时有60分钟?这不仅仅是午夜钟声敲响的第一个瞬间,我们所说的是午夜之后的整个小时,这显然是下一个24小时的一部分。

我个人不会在12点之后使用24,因为这很含糊。也许你可以在你的问题中加上你为什么要用24小时来做这件事?您的数据模型是真正精确到毫秒或类似级别的时间戳吗?还是希望存储和打印其他东西?

相关内容

  • 没有找到相关文章

最新更新