2012-05-11 57 views
14

我正在做一個程序,以"yyyy-MM-dd'T'HH:mm:ss.SSSZ"這種格式存儲當前的時間和日期。我將它作爲字符串存儲在數據庫中。當我收集數據時,我需要像日,年,分,秒等個人價值觀。我該怎麼做?如何獲取日,年,小時,分鐘從日期格式「yyyy-MM-dd'T'HH:mm:ss.SSSZ」單獨獲取?

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
String now = formatter.format(new Date()); 

謝謝

+0

什麼問題,您正在使用正確的類 –

+0

如何通過數據庫或Java代碼收集數據? – pawelzieba

+0

你的問題不清楚......你希望它們由用戶單獨輸入,或者你想將它們從數據庫中分離出來? – Barak

回答

12

我建議你在數據庫中存儲倍「timeInMillis」。根據我的經驗,它簡化了代碼,它允許您將時間值與彼此進行比較。

要存儲時間:

Calendar calendar = Calendar.getInstance(); // current time 
long timeInMillis = calendar.getTimeInMillis(); 
mDb.saveTime (timeInMillis); // adjust this to work with your DB 

要檢索時間:

long timeInMillis = mDb.getTime(); 
Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis (timeInMillis); 
int milliSeconds = calendar.get(MILLISECOND); 
//etc 
1

有可供得到一個日期的各個部分

getDate() 
getMinutes() 
getHours() 
getSeconds() 
getMonth() 
getTime() 
getTimezoneOffset() 
getYear() 
+0

這些方法在API級別1中已棄用。從JDK版本1.1開始,將替換爲使用以下前綴:Calendar.get(Calendar.YEAR) - 1900。 –

21

只需使用解析,而不是格式如下方法:

String dateFromDB = ""; 
SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
Date yourDate = parser.parse(dateFromDB); 

然後你可以使用java.util.Date &來閱讀你想要的任何字段Calendar API:

Calendar calendar = Calendar.getInstance(); 
    calendar.setTime(yourDate); 
    calendar.get(Calendar.DAY_OF_MONTH); //Day of the month :) 
    calendar.get(Calendar.SECOND); //number of seconds 
//and so on 

我希望它適合你的需求

+0

它顯示錯誤「java.text.ParseException:無法解析的日期:2012-05-11T18:25:55:250GMT' – wolverine

+0

嘗試在格式後面進行解析。 =>解析格式的輸出以查看問題是否來自數據庫。 – Estragon

+0

這裏我沒有通過數據庫的日期,我只是手動輸入它.. – wolverine

1

嘗試使用:INT小時= Calendar.getInstance()得到(Calendar.HOUR_OF_DAY);

這裏,

  • Calendar.HOUR_OF_DAY爲您提供24小時的時間。
  • Calendar.HOUR爲您提供12小時的時間。
相關問題