土. 4月 19th, 2025

Timestampクラスとは

Javaのjava.sql.Timestampクラスは、1970年1月1日00:00:00からのミリ秒単位の経過時間を表すためのクラスです。これは、データベースのタイムスタンプ値を表現するために使用されます。

Timestampクラスはjava.util.Dateクラスを拡張しており、ナノ秒の精度を追加しています。つまり、Timestampクラスは、ミリ秒単位の時間とナノ秒単位の時間を保持します。

以下は、Timestampクラスのインスタンスを作成する一例です:

Timestamp timestamp = new Timestamp(System.currentTimeMillis());

このコードは、現在のシステム時間(ミリ秒単位)を使用して新しいTimestampオブジェクトを作成します。このオブジェクトは、その後、データベースに保存したり、時間の計算に使用したりすることができます。また、Timestampクラスは、時間の比較やフォーマット変換など、さまざまな便利なメソッドを提供しています。これらのメソッドを使用することで、時間に関する複雑な操作を簡単に行うことができます。

valueOfメソッドの使い方

JavaのTimestampクラスのvalueOfメソッドは、文字列をTimestampオブジェクトに変換するための静的メソッドです。このメソッドは、以下の形式の文字列を受け取ります:

yyyy-[m]m-[d]d hh:mm:ss[.f...]

ここで、yyyyは4桁の年、mmは2桁の月、ddは2桁の日、hhは2桁の時、mmは2桁の分、ssは2桁の秒、そしてfはナノ秒を表します。

以下は、valueOfメソッドを使用して文字列からTimestampオブジェクトを作成する一例です:

Timestamp ts = Timestamp.valueOf("2020-01-01 10:20:30.123456789");

このコードは、指定された文字列をTimestampオブジェクトに変換します。このオブジェクトは、その後、データベースに保存したり、時間の計算に使用したりすることができます。

ただし、valueOfメソッドは、指定された文字列が上記の形式に従っていない場合、IllegalArgumentExceptionをスローします。したがって、このメソッドを使用する際は、入力文字列の形式を確認することが重要です。

TimestampとStringの変換

JavaのTimestampクラスは、Timestampオブジェクトと文字列の間で変換を行うためのメソッドを提供しています。これらのメソッドを使用することで、データベースやファイルから読み取った文字列をTimestampオブジェクトに変換したり、その逆の操作を行ったりすることができます。

StringからTimestampへの変換

前述の通り、TimestampクラスのvalueOfメソッドを使用して、文字列からTimestampオブジェクトを作成することができます。以下はその一例です:

Timestamp ts = Timestamp.valueOf("2020-01-01 10:20:30.123456789");

TimestampからStringへの変換

Timestampオブジェクトから文字列への変換は、toStringメソッドを使用して行います。このメソッドは、Timestampオブジェクトを以下の形式の文字列に変換します:

yyyy-mm-dd hh:mm:ss.fffffffff

以下は、toStringメソッドを使用してTimestampオブジェクトから文字列を作成する一例です:

Timestamp ts = new Timestamp(System.currentTimeMillis());
String str = ts.toString();

このコードは、現在のシステム時間を表すTimestampオブジェクトを作成し、それを文字列に変換します。この文字列は、その後、データベースに保存したり、ログに出力したりすることができます。

Timestampの精度と計算方法

JavaのTimestampクラスは、時間をミリ秒単位とナノ秒単位で保持します。これにより、Timestampは他の日付/時間クラスよりも高い精度を提供します。

精度

Timestampクラスの精度はナノ秒単位です。これは、1秒を10億(1,000,000,000)に等しいナノ秒に分割します。しかし、実際の精度はシステムのクロック精度に依存します。多くのシステムでは、クロック精度はミリ秒(1秒を1000に等しいミリ秒に分割)またはマイクロ秒(1秒を1,000,000に等しいマイクロ秒に分割)です。

計算方法

Timestampクラスは、java.util.Dateクラスを拡張しているため、日付と時間の計算にはDateクラスのメソッドを使用できます。また、Timestampクラス自体も時間の加算や減算などのメソッドを提供しています。

例えば、現在のTimestampに1時間を加算するには、以下のようにします:

Timestamp ts = new Timestamp(System.currentTimeMillis());
long oneHourInMilliseconds = 60 * 60 * 1000;
ts.setTime(ts.getTime() + oneHourInMilliseconds);

このコードは、現在のシステム時間を表すTimestampオブジェクトを作成し、その時間に1時間(ミリ秒単位)を加算します。

また、2つのTimestamp間の差を計算するには、以下のようにします:

Timestamp ts1 = Timestamp.valueOf("2020-01-01 10:20:30.123456789");
Timestamp ts2 = Timestamp.valueOf("2020-01-02 10:20:30.123456789");
long diffInMilliseconds = ts2.getTime() - ts1.getTime();

このコードは、指定された2つの文字列をTimestampオブジェクトに変換し、それらの時間の差(ミリ秒単位)を計算します。

Timestampの実用例

JavaのTimestampクラスは、データベースとのやり取りや、時間の計算など、さまざまな場面で使用されます。以下に、その具体的な使用例をいくつか示します。

データベースとのやり取り

データベースには、作成日時や更新日時など、タイムスタンプを必要とする情報が多く含まれています。Timestampクラスは、これらの情報を表現し、データベースとのやり取りを行うために使用されます。

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO my_table (name, created_at) VALUES (?, ?)");
pstmt.setString(1, "My Name");
pstmt.setTimestamp(2, new Timestamp(System.currentTimeMillis()));
pstmt.executeUpdate();

このコードは、現在のシステム時間を表すTimestampオブジェクトを作成し、それをデータベースに保存します。

時間の計算

Timestampクラスは、時間の計算を行うためにも使用されます。例えば、2つの時間の差を計算したり、特定の時間を加算または減算したりすることができます。

Timestamp ts1 = new Timestamp(System.currentTimeMillis());
Thread.sleep(1000);  // Wait for 1 second
Timestamp ts2 = new Timestamp(System.currentTimeMillis());
long diffInMilliseconds = ts2.getTime() - ts1.getTime();

このコードは、2つのTimestampオブジェクトの時間の差(ミリ秒単位)を計算します。

これらの例からわかるように、Timestampクラスは、時間に関する情報を扱うJavaプログラムにおいて、非常に有用なツールです。

By jakoten

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です