Java日付 - java.sql.Timestampクラス
JavaのTimestampの説明、TimestampからStringへの変換、StringからTimestampへの変換
Timestampクラス
java.sql.Timestampは、SQLのTIMESTAMP型に対応するために作られました。Timestampクラスで日付や時刻に関連するデータを操作する場合に使用します。
Timestampはjava.util.Dateクラスを継承したサブクラスです。
Timestampの理解
Timestampのコンストラクタには、ミリ秒の時間値を指定します。
SystemクラスのcurrentTimeMillis()メソッドを使用すると、ミリ秒で表される現在時刻が返されるため、これを使ってみましょう。
Timestamp currentTimestamp = new Timestamp(System.currentTimeMillis());
System.out.println(currentTimestamp);
実行結果:
2022-12-12 08:03:15.759
Timestamp <-> String変換
TimestampをStringに変換
TimestampをStringに変換するには、日付と時刻の形式でよく使われるSimpleDateFormatクラスを使用します。
Timestamp currentTimestamp = new Timestamp(System.currentTimeMillis());
// Timestamp to String
String currentTimestampToString = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(currentTimestamp);
System.out.println(currentTimestampToString);
実行結果:
2022/12/12 08:03:15
Timestampが2022/12/12 08:03:15のようなStringに変換されました。
StringをTimestampに変換
今度は逆に、StringからTimestampへ変換してみます。
まず、Stringからjava.util.Dateクラスに変換する必要があります。変換されたDateクラスからgetTime()でミリ秒を取得し、その値をTimestampコンストラクタに渡すと変換できます。
String currentTimestampToString = "2022/12/12 08:03:15";
// String to Timestamp
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
dateFormat.setLenient(false);// 日付と時刻を厳密に確認
try {
Date stringToDate = dateFormat.parse(currentTimestampToString);
Timestamp stringToTimestamp = new Timestamp(stringToDate.getTime());
System.out.println(stringToTimestamp);
} catch (ParseException e) {
e.printStackTrace();
}
実行結果:
2022-12-12 08:03:15.0
このように生成したTimestampは、データベースに保存するときに使用できます。
変換の全体コード
上で作成したコードの全体は次のとおりです。
package com.devkuma.basic.datetime;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TimestampConverter {
public static void main(String[] args) {
Timestamp currentTimestamp = new Timestamp(System.currentTimeMillis());
System.out.println(currentTimestamp);
// Timestamp to String
String currentTimestampToString = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(currentTimestamp);
System.out.println(currentTimestampToString);
// String to Timestamp
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
dateFormat.setLenient(false);// 日付と時刻を厳密に確認
try {
Date stringToDate = dateFormat.parse(currentTimestampToString);
Timestamp stringToTimestamp = new Timestamp(stringToDate.getTime());
System.out.println(stringToTimestamp);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
Timestampの代わりにLocalDateTime
Java 8では、Date、Calendarクラスの代替として、Instant、LocalDateTime、ZonedDateTimeが導入されました。
その中でもLocalDateTimeは、「タイムゾーンのない日時」を表す不変の日付/時刻オブジェクトで、データベースと関連して使用できます。