2012-03-03 44 views
1

我有以下格式填充時間戳數據庫:java的時間(星期三2月29日二十時56分47秒+0000 2012),以劃時代

Wed Feb 29 20:56:47 +0000 2012 
Wed Feb 29 00:32:48 +0000 2012 
Fri Apr 01 00:10:30 +0000 2011 

我需要把成大紀元輕鬆做計算。

我想他們是秒自1970年以來(像什麼System.currentTimeMillis()/1000一樣)

的Java是否有一些這方面的方法還是我必須分析和計算的呢?提前致謝。

+0

你想在哪裏執行這些計算?在你的代碼或數據庫級別? – Perception 2012-03-03 17:19:25

+0

在java代碼 – 2012-03-03 17:19:47

回答

3

那麼你必須分析它,但這是很容易做SimpleDateFormat

SimpleDateFormat format = new SimpleDateFormat("E MMM dd HH:mm:ss Z yyyy", 
               Locale.US); 

Date date = format.parse(text); 
long secondsSinceEpoch = date.getTime()/1000; 

在另一方面,它會更好,如果你存儲在一個比較合適的列式數據庫中的值開始。你真的將它們存儲爲文本?如果是這樣,爲什麼?

+0

我只需要一個標準。時代似乎是最容易使用的我。我需要計算時間間隔並以不同的代碼語言轉換爲不同的格式。 – 2012-03-03 17:23:37

+0

@PatrickLorio:但爲什麼在數據庫中使用* text *呢?當然你的數據庫有某種DATETIME字段類型,即使它不存在,從紀元*開始將數字毫秒或秒存儲爲數字*會更有效率。爲什麼要經歷解析和格式化? (請注意,使用非文本格式,您可以計算SQL *中的時間間隔*,以及執行用於篩選的比較等)。 – 2012-03-03 17:25:14

+0

對不起,我不認爲我正確回答了您的問題。我將以數字形式存儲時代。我只會將其格式化一次到數據庫中。並將其轉換爲不同的格式將在客戶端。另外,我不會進行SQL操作,它只是一個存儲我的數據而不是通過它的緊縮的地方。 – 2012-03-03 18:09:09

相關問題