JavaでのStringとDate、Timestamp間の変換

5361 ワード

一、StringとDate(java.util.Date)の相互回転
     1.1 String -> Date

String dateStr = "// ::";  
    Date date = new Date();  
   //  format       String        
   DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");  
   try {  
     date = sdf.parse(dateStr);  
      System.out.println(date.toString());  
    } catch (Exception e) {  
      e.printStackTrace();  
    } 
 String dateStr = "2010/05/04 12:34:23";
 Date date = new Date();
 //  format       String      
 DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 try {
  date = sdf.parse(dateStr);
  System.out.println(date.toString());
 } catch (Exception e) {
  e.printStackTrace();
 } 

  1.2 Date -> String
日付から文字列への変換、任意の変換フォーマットformatを設定できます

String dateStr = "";  
   Date date = new Date();  
   //format         
    DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");  
   DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH/mm/ss");  
    try {  
      dateStr = sdf.format(date);  
     System.out.println(dateStr);  
      dateStr = sdf.format(date);  
      System.out.println(dateStr);  
    } catch (Exception e) {  
      e.printStackTrace();  
    } 
 String dateStr = "";
 Date date = new Date();
 //format       
 DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 DateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH/mm/ss");
 try {
  dateStr = sdf.format(date);
  System.out.println(dateStr);
  dateStr = sdf2.format(date);
  System.out.println(dateStr);
 } catch (Exception e) {
  e.printStackTrace();
 } 

二、StringとTimestampの相互回転
  2.1 String ->Timestamp
Timestampを使用したvalueOf()メソッド

Timestamp ts = new Timestamp(System.currentTimeMillis());  
    String tsStr = "-- ::";  
     try {  
       ts = Timestamp.valueOf(tsStr);  
       System.out.println(ts);  
    } catch (Exception e) {  
      e.printStackTrace();  
    } 
 Timestamp ts = new Timestamp(System.currentTimeMillis());
 String tsStr = "2011-05-09 11:49:45";
 try {
  ts = Timestamp.valueOf(tsStr);
  System.out.println(ts);
 } catch (Exception e) {
  e.printStackTrace();
 } 

注意:Stringのタイプは、yyyy-mm-dd hh:mm:ss[.f...]のように形成する必要があります.このようなフォーマット、中括弧はオプションを表して、さもなくば間違いを報告します!!!
Stringが他のフォーマットであれば、文字列を再解析して再編成することも考えられます~~
    2.2 Timestamp -> String
TimestampのtoString()メソッドを使用するか、DateFormatを借りる

Timestamp ts = new Timestamp(System.currentTimeMillis());  
    String tsStr = "";  
    DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");  
    try {  
      //     
      tsStr = sdf.format(ts);  
     System.out.println(tsStr);  
     //     
    tsStr = ts.toString();  
      System.out.println(tsStr);  
    } catch (Exception e) {  
     e.printStackTrace();  
   } 
 Timestamp ts = new Timestamp(System.currentTimeMillis());
 String tsStr = "";
 DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 try {
  //   
  tsStr = sdf.format(ts);
  System.out.println(tsStr);
  //   
  tsStr = ts.toString();
  System.out.println(tsStr);
 } catch (Exception e) {
  e.printStackTrace();
 } 

方法1の利点は,文字列の形式を柔軟に設定できることであることが容易に分かる.
三、Date(java.util.Date)とTimestampの相互回転
声明:APIを調べると、DateとTimestaは親子関係であることがわかる
  3.1 Timestamp -> Date

Timestamp ts = new Timestamp(System.currentTimeMillis());  
   Date date = new Date();  
   try {  
     date = ts;  
      System.out.println(date);  
    } catch (Exception e) {  
     e.printStackTrace();  
    } 
 Timestamp ts = new Timestamp(System.currentTimeMillis());
 Date date = new Date();
 try {
  date = ts;
  System.out.println(date);
 } catch (Exception e) {
  e.printStackTrace();
 }

簡単ですが、現在dateオブジェクトが指すエンティティは、Dateクラスを持つメソッドであるTimestampですが、上書きされたメソッドの実行エンティティはTimestampにあります.
   3.2 Date -> Timestamp
親は子に直接変換することはできません.真ん中のString~~~を借りることができます.

java.sql.Date               
//        
preparedStatement.setDate(1, new java.sql.Date(date.getTime()));
//       
preparedStatement.setTimestamp(1, new java.sql.Timestamp(new java.util.Date().getTime()));
 //         ,       ,    
java.util.Date d = resultSet.getTimestamp(1);
//         ,        Timestamp   
java.util.Date d = new java.util.Date(resultSet.getTimestamp(1).getTime());

自分で補うと、こうなると:
データベースに格納時にjavaを受信することができる.util.DateタイプはgetTime()メソッドでそのDateオブジェクトを表すlong値を得、このlong値でTimestampオブジェクトを構築してデータベースに格納します.
データベースから取り出すときは、まずTimestampを得て彼のgetTime()メソッドでlong値を得て、このlong値でjavaを構築することができます.util.Dateオブジェクト、これでこのDateオブジェクトを操作できます.むしろnew SimpleTimeFormat("yyyyyy-MM-dd HH:mm:ss").format()など