2015-05-29 29 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作爲這個小時?您的數據模型是否真正將時間標記爲毫秒或類似時間?或者你是否希望存儲和打印其他內容?