最近在接收一个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