最近在接收一個Android項目,需要連接webService,於是要封裝SOAP對象,服務器接收的時間字段是datetime類型,原本我以爲封裝SOAP對象時候,String類型解決一切,但是錯了。服務器只認可datetime(“yyyy-MM-dd HH:mm:ss”)。
在設計程序數據結構時候,一切時間字段都自動轉換成String類型,用過Android本地數據庫,大夥應該知道,會使用SQLite,它並不支持Date類型存儲,只好轉換成TEXT,再存到數據庫。
但是再利用時候,就有問題了。於是,String轉換Date,很鬱悶,通常都是Date轉換String,這些代碼馬上解決:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date=new java.util.Date();
String str=sdf.format(date);
代碼生疏,於是網上百度了一陣,String轉換Date,好多文章是忽悠別人,通常搜索到以下的做法:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = new Date();
String str = "2015-02-10 22:00:00";
try {
d = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(str);
System.out.println("DateTime>>>>>>: " + d);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
運行結果是:DateTime>>>>>>: Tue Feb 10 22:00:00 CST 2015
這與我想要的結果Date(yyyy-MM-dd HH:mm:ss),完全不同,況且,封裝在SOAP時,程序會報錯Tue Feb 10 22:00:00 CST 2015無法識別
後來終於是找到了我想要的結果Date(yyyy-MM-dd HH:mm:ss)
於是,我總結了以下,編寫了測試程序,加深理解:
String string = "2015-02-10 22:00:00";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1;
try {
d1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(string);
System.out.println("DateTime d1>>>>>>: " + d1);
String d2 = format.format(d1);
System.out.println("DateTime d2>>>>>>: " + d2);
Date d3;
d3 = format.parse(d2);
System.out.println("DateTime d3>>>>>>: " + format.format(d3));
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
代碼雖易,但真正有幾個人真正理解,又在關鍵時候想出來呢?
Sometime it is good to fall to really know where you stand.
Good Night