2012-03-22 18 views
2

我有一個時間戳的ArrayList。我想將這個ArrayList分成幾個ArrayLists廣告,並將它們放入按日分組的HashMap中。因此,所有的時間戳爲14-01-2011一起去,時間戳爲29-01-2012全部一起去,等...需要將時間戳分成不同的日子

僞 -

myTimestampMap['21-03-2012'] = ArrayList { myTimestamp[0], myTimestamp[1], myTimestamp[2] }; 
myTimestampMap['22-03-2012'] = ArrayList { timeStmyTimestamp[3], myTimestamp[4]}; 

我知道下面的算法將工作 -

  • 採取的時間戳ArrayList中的第一個值,發現它是「天」,並分配到一個名爲CURRENTDAY(可變因此,如果第一時間戳是2012年3月12日下午14:26,分配2012 3月12日00:00 AM到當前日期)。

  • 現在迭代時間戳,如果getDay()不在currentDay + 24小時內,則指定currentDay = getDay()(在上午00:00),在HashMap中創建一個新鍵並將所有以下時間戳放入直到我們來到時間戳,getDay()不在當前日期+ 24小時內,然後重複。

    1. 我不確定的事情是,如果我有一個時間戳表示,比方說,2012年3月12日下午16:57,我必須從那個標誌着2012年3月12日00:00 AM得出一個時間戳(CURRENTDAY)。我會怎麼做?
    2. 我還需要檢查給定的時間戳是否在當前時間戳的24小時內。我會怎麼做?
+1

你對哪個時區感興趣? – 2012-03-22 11:31:50

+0

GMT。我不需要擔心其他時區。 – csss 2012-03-22 11:41:05

回答

1

假設你可以忽略時區的問題(例如,所有的時候,你必須在UTC,你不介意閏秒!)...

如果轉換日期和(epoch time格式使用1/1/1970 00:00:00),然後您可以執行秒整數除以一天中的秒數)以將其轉換爲表示天數的整數。

要檢查給定的時間戳是否在同一天,那麼您只需比較值/ 86400

+1

不是模分割。只需*除以單位/天。 – 2012-03-22 11:50:34

+0

好的歡呼聲,會給它一個伴侶 – csss 2012-03-22 11:51:34

+0

@JonSkeet好點,更新了帖子。 – 2012-03-22 12:01:49