Java で文字列を DateTime オブジェクトに変換する
-
Java で日付文字列を DateTime オブジェクトに変換するには
SimpleDateFormat
とjava.util.Date
を使用する - Java 8 の日付と時刻のライブラリを使用して日付文字列を日時形式に変換する
-
joda-time
を使って日付文字列を日付時間形式に変換する -
Java の
Timestamp
コンストラクタを使って文字列の日付をタイムスタンプに変換する -
Java で日付文字列を
LocalDate
でタイムスタンプTimestamp
に変換する -
Java の
atStartOfDay()
メソッドで文字列の日付をタイムスタンプTimestamp
に変換する
この記事では、さまざまなアプローチと例を使って、与えられた文字列を DateTime
オブジェクトに変換する方法を紹介します。
Java で日付文字列を DateTime オブジェクトに変換するには SimpleDateFormat
と java.util.Date
を使用する
SimpleDateFormat
は、ロケールセンシティブな方法で日付を解析して書式設定するために使われるクラスです。これにより、文字列を DateTime
に変換したり、DateTime
オブジェクトを文字列に変換したりすることができます。
以下のコードでは、文字列 date_time
を用いています。この文字列は SimpleDateFormat
インスタンス dateParser
の parse
メソッドを呼び出して解析されます。解析したい文字列 date_time
の形式は SimpleDateFormat
のコンストラクタで指定します。
また、異なるフォーマットで SimpleDateFormat
クラスの新しいインスタンスを作成しました。解析された date
はフォーマットされて出力されます。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringToDateTime {
public static void main(String[] args) {
String date_time = "11/27/2020 05:35:00";
SimpleDateFormat dateParser = new SimpleDateFormat("MM/dd/yy HH:mm:ss");
{
try {
Date date = dateParser.parse(date_time);
System.out.println(date);
SimpleDateFormat dateFormatter = new SimpleDateFormat("MM/dd/yy");
System.out.println(dateFormatter.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
}
出力:
Fri Nov 27 05:35:00 UTC 2020
11/27/20
Java 8 の日付と時刻のライブラリを使用して日付文字列を日時形式に変換する
LocaleDate
クラスは、時刻を含まない ISO
形式の日付を表します。DateTimeFormatter
クラスは、さまざまな形式の日付を解析するために使用します。DateTimeFormatter
の ofPattern()
メソッドをコールすることで、カスタムパターンを提供することができます。
LocaleDate
には parse()
メソッドがあり、カスタムのテキスト文字列と特定のフォーマッタ inputFormat
を指定して解析し、LocalDate
のインスタンスを取得します。取得した LocaleDate
インスタンス date
は、フォーマットされて出力されます。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
DateTimeFormatter inputFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss");
LocalDate date = LocalDate.parse("11/27/2020 05:35:00", inputFormat);
DateTimeFormatter outputFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy");
System.out.println(date.format(outputFormat));
}
}
出力:
11/27/2020
joda-time
を使って日付文字列を日付時間形式に変換する
joda-time
は標準の DateTime
ライブラリで、日付と時刻の計算を行うための豊富なメソッドを提供します。このライブラリの機能をインクルードするための maven 依存関係は以下の通りです。
<!-- https://mvnrepository.com/artifact/joda-time/joda-time -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.8</version>
</dependency>
DateTimeFormatter
は、日付と時刻のカスタム表現を解析することができます。
フォーマッタのインスタンス datetimeformat
をカスタムパターンで作成します。フォーマッタインスタンスで parseDateTime
をコールすると、カスタム文字列 dateTime
を用いた DateTime オブジェクトが得られます。
ここでは、カスタムパターンを変更して新しい DateTimeFormatter
インスタンス dateTimeFormatOut
を作成しました。新しいインスタンスで print()
メソッドが呼ばれ、DateTime オブジェクト joda_time
を新しいフォーマットで表示します。
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class StringToDateTime {
public static void main(String[] args) {
String dateTime = "11/27/2020 05:35:00";
DateTimeFormatter datetimeformat = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");
DateTime joda_time = datetimeformat.parseDateTime(dateTime);
System.out.println("joda_time : " + joda_time);
DateTimeFormatter dateTimeFormatOut = DateTimeFormat.forPattern("MM/dd/yyyy");
System.out.println("date time format out: " + dateTimeFormatOut.print(joda_time));
}
}
出力:
joda_time : 2020-11-27T05:35:00.000+05:30
date time format out: 11/27/2020
Java の Timestamp
コンストラクタを使って文字列の日付をタイムスタンプに変換する
ここでは、Timestamp
コンストラクタを用いて Timestamp
オブジェクトを取得します。まず、SimpleDateFormat
クラスを用いて date
のフォーマットを設定し、parser()
メソッドを用いて日付オブジェクトを取得した後、geteTime()
メソッドを用いて日付に時間を加え、結果として timestamp
を取得します。以下の例を参照してください。
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleTesting {
public static void main(String[] args) {
try {
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = dateFormat.parse("12/10/1990");
Timestamp timeStampDate = new Timestamp(date.getTime());
System.out.println(timeStampDate);
} catch (ParseException e) {
System.out.println(e);
}
}
}
出力:
1990-10-12 00:00:00.0
Java で日付文字列を LocalDate
でタイムスタンプ Timestamp
に変換する
Java 8 では、日付と時刻を扱ういくつかのクラスを含む新しい java.time
パッケージが追加されます。ここでは、そのパッケージの LocalDate
クラスを利用します。LocalDate
クラスの parse()
メソッドを使って日付文字列から LocalDate
オブジェクトを取得し、atTime()
メソッドを使って時刻付きの日付を返す LocalDateTime
オブジェクトを取得します。現在の時刻を取得するには now()
を用います。
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
public class SimpleTesting {
public static void main(String[] args) {
LocalDate date = LocalDate.parse("2025-11-25");
System.out.println(date);
LocalDateTime dateTime = date.atTime(LocalTime.now());
System.out.println(dateTime);
}
}
出力:
2025-11-25
2025-11-25T09:44:56.814795
Java の atStartOfDay()
メソッドで文字列の日付をタイムスタンプ Timestamp
に変換する
LocalDate
クラスの atStartOfDay()
メソッドも LocalDateTime
オブジェクトを取得するために利用します。このメソッドは一日の始まりの日付に時間を加え、単純な日付ではなく date-time
を返します。以下の例を参照してください。
import java.time.LocalDate;
import java.time.LocalDateTime;
public class SimpleTesting {
public static void main(String[] args) {
String strDate = "2019-10-20";
LocalDate date = LocalDate.parse(strDate);
LocalDateTime dateTime = date.atStartOfDay();
System.out.println(dateTime);
}
}
出力:
2019-10-20T00:00
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn