我在數據庫中有這樣的XML 50000所記載:currentTimeMillis()函數和特殊日期的Java差異 - MySQL?
<?xml version="1.0" encoding="UTF-8"?>
<root>
<urlMD5>11ca7070ad6eb3180c53281e7b597976</urlMD5>
<date>
<year>2011</year>
<month>8</month>
<day>6</day>
<h>19</h>
<m>26</m>
<s>40</s>
</date>
<enc>utf-8</enc>
</root>
正如你看到的,我保存在分離格式的日期。 現在我需要提取這些日子的currentTimeMillis()並將其保存到新字段中的數據庫中。 因此,我可以輕鬆地將它們與當前currentTimeMillis()進行比較,並找出最近兩天內存儲的文檔。 例如:
int ct = currentTimeMillis();
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/crawler?" + "user=root&password=&useUnicode=true&characterEncoding=UTF-8");
Statement stat = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM DBName WHERE ct - 60 * 60 * 24 * 2 > timeField");
而且因爲我想利用這個領域這麼多次,我想用一個簡單的查詢,我不想每次提取XML格式。
問題是的currentTimeMillis()函數的計算,從1970年1月1日,通過的currentTimeMillis,我需要計算與我的數據是一樣的。 我寫了下面的與我使用之前存儲XML數據,以確保如果我能做到這一點還是不一樣的代碼代碼:
int s = 0;
s += (Calendar.getInstance().get(Calendar.YEAR) - 1970) * 60 * 60 * 24 * 365;
s += (Calendar.getInstance().get(Calendar.MONTH)) * 60 * 60 * 24 * 31;
s += (Calendar.getInstance().get(Calendar.DAY_OF_MONTH) * 60 * 60 * 24);
s += (Calendar.getInstance().get(Calendar.HOUR_OF_DAY) * 60 * 60);
s += (Calendar.getInstance().get(Calendar.MINUTE) * 60);
s += (Calendar.getInstance().get(Calendar.SECOND));
System.out.println(s);
System.out.println(System.currentTimeMillis()/1000);
但結果是不一樣的:
1312313680
1312643080
其中一個原因是因爲不是每個月都有31天。
任何方式,我需要幫助找出我怎麼能計算與特殊的日子,而不是當前日期的currentTimeMillis?
我要指出,我使用MySQL,所以也許我可以保存特殊格式的日期,我可以用SQL查詢比較?
謝謝 它的工作! 完成後應該重置日曆嗎? – Soheil
重置是什麼意思?您可以多次重複使用同一個Calendar對象,前提是您不要忘記設置每個字段,從年份到毫秒。 –
我的錯誤,你是對的。 – Soheil