文字列とタイムスタンプの間の変換

文字列とタイムスタンプ間の変換

1. 概要

Timestampは、Javaの数少ないレガシー日時オブジェクトの1つです。

このチュートリアルでは、String値からTimestampオブジェクトに解析する方法と、TimestampオブジェクトをString.にフォーマットする方法を説明します。

また、TimestampはJava独自の形式に依存しているため、効果的に適応する方法を説明します。

2. StringTimestampに解析します

2.1. 標準フォーマット

String Timestampに解析する最も簡単な方法は、そのvalueOf メソッドです。

Timestamp.valueOf("2018-11-12 01:02:03.123456789")

また、StringがJDBCタイムスタンプ形式(yyyy-m[m]-d[d] hh:mm:_ss [.f…] _)の場合、非常に簡単です。

このパターンは次のように解釈できます。

パターン 説明

yyyy

年を表し、4桁の数字が必須です。

2018

m[m]

月コンポーネントの場合、1桁または2桁(1から12)が必要です。

1、11

d[d]

日の値には、1桁または2桁(1から31)が必要です。

7、12

hh

1日の時間を表し、許容値は0から23です。

01、16

mm

0から59までの許容値で、1時間の分を表します。

02、45

ss

分単位の秒数を表し、許容値は0から59です。

03、52

[.f…]

オプションの秒の小数部を表し、最大ナノ秒の精度にすることができるため、許可される値は0〜999999999です。

12、1567、123456789

2.2. 代替フォーマット

これで、JDBCタイムスタンプ形式でない場合、幸いなことに、valueOf LocalDateTime インスタンスを取ります。

This means we can take a date in any format,最初にconvert it into a LocalDateTimeを実行する必要があります。

String pattern = "MMM dd, yyyy HH:mm:ss.SSSSSSSS";
String timestampAsString = "Nov 12, 2018 13:02:56.12345678";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
LocalDateTime localDateTime = LocalDateTime.from(formatter.parse(timestampAsString));

そして、以前に行ったvalueOfを使用できます。

Timestamp timestamp = Timestamp.valueOf(localDateTime);
assertEquals("2018-11-12 13:02:56.12345678", timestamp.toString());

その際、unlike a Date object, a Timestamp object is capable of storing fractions of a second.に注意してください

3. TimestampStringとしてフォーマットします

Timestampをフォーマットするには、デフォルトのフォーマットが独自のJDBCタイムスタンプフォーマットであるため、同じ課題があります。

assertEquals("2018-11-12 13:02:56.12345678", timestamp.toString());

ただし、ここでも、中間変換を使用して、結果のStringをISO-8601標準のように異なる日付と時刻のパターンにフォーマットできます。

Timestamp timestamp = Timestamp.valueOf("2018-12-12 01:02:03.123456789");
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;

String timestampAsString = formatter.format(timestamp.toLocalDateTime());
assertEquals("2018-12-12T01:02:03.123456789", timestampAsString);

4. 結論

この記事では、JavaでStringオブジェクトとTimestampオブジェクトを変換する方法について説明しました。 また、異なる日付と時刻のパターンとの間で変換するための中間ステップとして、LocalDateTime変換を使用する方法も確認しました。

そして、これらの例とスニペットover on GitHubをすべて見つけてください。