JavaでのStringとDate、Timestamp間の変換
5361 ワード
一、StringとDate(java.util.Date)の相互回転
1.1 String -> Date
1.2 Date -> String
日付から文字列への変換、任意の変換フォーマットformatを設定できます
二、StringとTimestampの相互回転
2.1 String ->Timestamp
Timestampを使用したvalueOf()メソッド
注意:Stringのタイプは、yyyy-mm-dd hh:mm:ss[.f...]のように形成する必要があります.このようなフォーマット、中括弧はオプションを表して、さもなくば間違いを報告します!!!
Stringが他のフォーマットであれば、文字列を再解析して再編成することも考えられます~~
2.2 Timestamp -> String
TimestampのtoString()メソッドを使用するか、DateFormatを借りる
方法1の利点は,文字列の形式を柔軟に設定できることであることが容易に分かる.
三、Date(java.util.Date)とTimestampの相互回転
声明:APIを調べると、DateとTimestaは親子関係であることがわかる
3.1 Timestamp -> Date
簡単ですが、現在dateオブジェクトが指すエンティティは、Dateクラスを持つメソッドであるTimestampですが、上書きされたメソッドの実行エンティティはTimestampにあります.
3.2 Date -> Timestamp
親は子に直接変換することはできません.真ん中のString~~~を借りることができます.
自分で補うと、こうなると:
データベースに格納時に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()など
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()など