2015-05-29 32 views
3

据我所知,kk应该会导致小时数在1-24之间。但是,这种格式化的日子如何变化似乎存在一个问题。用kk小时格式化的Java SimpleDateFormat问题

下面是示例代码和它的输出来说明我的观点:

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年5月21日24问题“如果这个日期不被格式化为”2015-05-20 24“。

感谢您的澄清。

编辑:在回答丹·盖茨我想如下创建迭代文件名:

2015052023.txt

2015052024.txt

2015052101.txt

+0

24小时= 1天:) – nafas

+0

是的,但它是第20天的最后一个小时。不是第21天的最后一小时.kk应该从1到24进行迭代,我的解释是给定的一天。为什么一天的时间从23小时变为24小时。 – gstanley

+0

感谢您为您的问题编辑更多信息。你只是试图创建一些文件名,或者这些文件名是否与时间戳相链接,比如创建文件的时间或将要记录在文件中的事件? “24小时”应该是一段时间的开始还是结束? –

回答

1

什么它依赖于时区而独立于写入时间的方式。所以如果日期是21日,那么日期是21日,故事结束。将“12am”写为“00”或“24”与此无关。

也许你忘了一个小时有60分钟的时间吗?这不仅是第一次,午夜时钟敲响,这是整个小时后我们正在谈论,这显然是下一个24小时的一天。

因为这种模糊性,我个人决不会在上午12点以后使用24次。也许你可以编辑你的问题,为什么你想用24作为这个小时?您的数据模型是否真正将时间标记为毫秒或类似时间?或者你是否希望存储和打印其他内容?