在Java中String和Date、Timestamp之间的转换
一、String与Date(java.util.Date)互转
1.1String->Date
StringdateStr="//::"; Datedate=newDate(); //注意format的格式要与日期String的格式相匹配 DateFormatsdf=newSimpleDateFormat("yyyy/MM/ddHH:mm:ss"); try{ date=sdf.parse(dateStr); System.out.println(date.toString()); }catch(Exceptione){ e.printStackTrace(); } StringdateStr="2010/05/0412:34:23"; Datedate=newDate(); //注意format的格式要与日期String的格式相匹配 DateFormatsdf=newSimpleDateFormat("yyyy/MM/ddHH:mm:ss"); try{ date=sdf.parse(dateStr); System.out.println(date.toString()); }catch(Exceptione){ e.printStackTrace(); }
1.2Date->String
日期向字符串转换,可以设置任意的转换格式format
StringdateStr=""; Datedate=newDate(); //format的格式可以任意 DateFormatsdf=newSimpleDateFormat("yyyy/MM/ddHH:mm:ss"); DateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH/mm/ss"); try{ dateStr=sdf.format(date); System.out.println(dateStr); dateStr=sdf.format(date); System.out.println(dateStr); }catch(Exceptione){ e.printStackTrace(); } StringdateStr=""; Datedate=newDate(); //format的格式可以任意 DateFormatsdf=newSimpleDateFormat("yyyy/MM/ddHH:mm:ss"); DateFormatsdf2=newSimpleDateFormat("yyyy-MM-ddHH/mm/ss"); try{ dateStr=sdf.format(date); System.out.println(dateStr); dateStr=sdf2.format(date); System.out.println(dateStr); }catch(Exceptione){ e.printStackTrace(); }
二、String与Timestamp互转
2.1String->Timestamp
使用Timestamp的valueOf()方法
Timestampts=newTimestamp(System.currentTimeMillis()); StringtsStr="--::"; try{ ts=Timestamp.valueOf(tsStr); System.out.println(ts); }catch(Exceptione){ e.printStackTrace(); } Timestampts=newTimestamp(System.currentTimeMillis()); StringtsStr="2011-05-0911:49:45"; try{ ts=Timestamp.valueOf(tsStr); System.out.println(ts); }catch(Exceptione){ e.printStackTrace(); }
注:String的类型必须形如:yyyy-mm-ddhh:mm:ss[.f...]这样的格式,中括号表示可选,否则报错!!!
如果String为其他格式,可考虑重新解析下字符串,再重组~~
2.2Timestamp->String
使用Timestamp的toString()方法或者借用DateFormat
Timestampts=newTimestamp(System.currentTimeMillis()); StringtsStr=""; DateFormatsdf=newSimpleDateFormat("yyyy/MM/ddHH:mm:ss"); try{ //方法一 tsStr=sdf.format(ts); System.out.println(tsStr); //方法二 tsStr=ts.toString(); System.out.println(tsStr); }catch(Exceptione){ e.printStackTrace(); } Timestampts=newTimestamp(System.currentTimeMillis()); StringtsStr=""; DateFormatsdf=newSimpleDateFormat("yyyy/MM/ddHH:mm:ss"); try{ //方法一 tsStr=sdf.format(ts); System.out.println(tsStr); //方法二 tsStr=ts.toString(); System.out.println(tsStr); }catch(Exceptione){ e.printStackTrace(); }
很容易能够看出来,方法一的优势在于可以灵活的设置字符串的形式。
三、Date(java.util.Date)和Timestamp互转
声明:查API可知,Date和Timesta是父子类关系
3.1Timestamp->Date
Timestampts=newTimestamp(System.currentTimeMillis()); Datedate=newDate(); try{ date=ts; System.out.println(date); }catch(Exceptione){ e.printStackTrace(); } Timestampts=newTimestamp(System.currentTimeMillis()); Datedate=newDate(); try{ date=ts; System.out.println(date); }catch(Exceptione){ e.printStackTrace(); }
很简单,但是此刻date对象指向的实体却是一个Timestamp,即date拥有Date类的方法,但被覆盖的方法的执行实体在Timestamp中。
3.2Date->Timestamp
父类不能直接向子类转化,可借助中间的String~~~~
java.sql.Date只存储日期数据不存储时间数据 //会丢失时间数据 preparedStatement.setDate(1,newjava.sql.Date(date.getTime())); //可以这样来处理 preparedStatement.setTimestamp(1,newjava.sql.Timestamp(newjava.util.Date().getTime())); //想要得到完整的数据,包括日期和时间,可以这样 java.util.Dated=resultSet.getTimestamp(1); //这样处理更合适一些,可以避免一些潜在Timestamp问题 java.util.Dated=newjava.util.Date(resultSet.getTimestamp(1).getTime());
自己补的话,这样的话:
往数据库存储的时候可以接收java.util.Date类型再用getTime()方法得到代表那个Date对象的long值,再以这个long值构造一个Timestamp对象存进数据库中。
从存数据库里取的时候,可以先得到Timestamp用他的getTime()方法得到long值,再以这个long值构造一个java.util.Date对象,这样就可以对这个Date对象操作了。不如说newSimpleTimeFormat("yyyyy-MM-ddHH:mm:ss").format()等等