タイムスタンプから文字列へ、文字列からタイムスタンプへ
2014/02/10
2014/03/26
■
java
日付処理
追記 2014/03/27 下の記事もあわせて参照のこと
プログラマメモ2: java.sql.TimestampからgetTimeすると、もとの精度にはもどせないことに注意せよ。
javaです。
java.sql.Timestampを文字列表現にします。それから文字列をTimestampに復元します。
元のTimestampと比較して等値かどうか調べるような場合を想定しています。
簡単に2種類ほど方法はあるかと思います。
ひとつはSimpleDateFormatを使うやり方。
もうひつとは、long値をとりだしてそれを文字列として扱うやり方です。
SimpleDateFormatを使う場合はのフォーマットは
ただ僕的には、ちょっと違和感があります。
これよりlong値にして引き回した方がいいかなーと思います。
ただし、SimpleDateFormatのほうが、人が理解しやすい、ヒューマンリーダブルな感じです。
試したコードは以下
結果はこんな感じ
プログラマメモ2: java.sql.TimestampからgetTimeすると、もとの精度にはもどせないことに注意せよ。
javaです。
java.sql.Timestampを文字列表現にします。それから文字列をTimestampに復元します。
元のTimestampと比較して等値かどうか調べるような場合を想定しています。
簡単に2種類ほど方法はあるかと思います。
ひとつはSimpleDateFormatを使うやり方。
もうひつとは、long値をとりだしてそれを文字列として扱うやり方です。
SimpleDateFormatを使う場合はのフォーマットは
yyyy-MM-dd HH:mm:ss.SSSになります。
ただ僕的には、ちょっと違和感があります。
これよりlong値にして引き回した方がいいかなーと思います。
ただし、SimpleDateFormatのほうが、人が理解しやすい、ヒューマンリーダブルな感じです。
試したコードは以下
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestTimestamp {
public static void main(String[] args) throws ParseException {
a();
}
static void a() throws ParseException {
// タイムスタンプを生成
final Timestamp timestamp = new Timestamp(new Date().getTime());
System.out.println(timestamp);
final String stt = timestamp.toString();
{// がんばって文字列からTimestampを作り直す
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss.SSS");
Date date = simpleDateFormat.parse(stt);
Timestamp timestamp2 = new Timestamp(date.getTime());
if (timestamp.equals(timestamp2)) {
System.out.println("*** BINGO!");
} else {
System.out.println("*** ouch");
}
}
{// longから文字列にしてそれをもとにもどしてからTimestamp作って比較
String slong = timestamp.getTime() + "";
long l = Long.parseLong(slong);
Timestamp timestamp2 = new Timestamp(l);
if (timestamp.equals(timestamp2)) {
System.out.println("*** BINGO!");
} else {
System.out.println("*** ouch");
}
}
}
}
結果はこんな感じ
2014-02-11 00:11:49.034
*** BINGO!
*** BINGO!
: