LocalDateTime ↔ String 変換ツール|フォーマット完全ガイド

LocalDateTime ↔ String 変換ツール

Java の LocalDateTimeString を相互変換。フォーマットパターン対応・変換履歴付き。

入力欄に日時を入力し、出力フォーマットを選択または直接入力してください。
文字列と対応するフォーマットパターンを入力して、LocalDateTime のフィールドに変換します。
最近の変換履歴(最大5件)
  • まだ変換履歴はありません。

クイック変換サンプル

よく使うフォーマットのクリックで即変換。クリックすると変換ツールにセットされます。


DateTimeFormatter パターン文字一覧

文字 意味 例(値) 出力例
y2025年2025 / 25(yy)
M月(数値/テキスト)9月9(M)/ 09(MM)/ Sep(MMM)
d日(月内)5日5(d)/ 05(dd)
H時(0〜23、24時間制)14時14
h時(1〜12、12時間制)午後2時2
m30分30
s45秒45
Sミリ秒(秒の小数部)123ミリ秒1(S)/ 12(SS)/ 123(SSS)
nナノ秒123456789123456789
E曜日名火曜日Tue(EEE)/ Tuesday(EEEE)
a午前/午後PMAM / PM
D年内通算日1月15日15
G紀元(元号)西暦AD
zタイムゾーン名JSTJST(ZonedDateTimeのみ)
Zタイムゾーンオフセット+0900+0900
Xオフセット(UTC=Z)+0900/UTC+09:00(XX)/ Z(UTC時)
‘text’リテラル文字(エスケープ)T などyyyy-MM-dd’T’HH:mm:ss

主要フォーマット対照表

フォーマット名 パターン 出力例 主な用途
ISO 8601(基本)yyyy-MM-dd’T’HH:mm:ss2025-09-23T12:30:45API、国際標準
ISO 8601(ミリ秒)yyyy-MM-dd’T’HH:mm:ss.SSS2025-09-23T12:30:45.123ログ、精度が必要な場合
標準日時yyyy-MM-dd HH:mm:ss2025-09-23 12:30:45データベース(MySQL等)
スラッシュ区切りyyyy/MM/dd HH:mm:ss2025/09/23 12:30:45日本のWebシステム
日本語形式yyyy年MM月dd日 HH時mm分ss秒2025年09月23日 12時30分45秒UI表示、帳票
コンパクトyyyyMMddHHmmss20250923123045ファイル名、ログID
ミリ秒タイムスタンプyyyyMMddHHmmssSSS20250923123045123一意キー生成
日付のみyyyy-MM-dd2025-09-23日付フィールド
時刻のみHH:mm:ss12:30:45時刻表示

変換手順とJavaコード例

LocalDateTime → String の変換手順

  1. LocalDateTimeオブジェクトを取得
    LocalDateTime.now() または LocalDateTime.of(年, 月, 日, 時, 分, 秒) で生成します。
  2. DateTimeFormatterを作成
    DateTimeFormatter.ofPattern("パターン文字列") で変換フォーマットを指定します。
  3. format()メソッドで変換
    dateTime.format(formatter) を呼び出すと文字列が返ります。
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; // LocalDateTime → String LocalDateTime dateTime = LocalDateTime.of(2025, 9, 23, 12, 30, 45); DateTimeFormatter formatter = DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss”); String result = dateTime.format(formatter); // 結果: “2025-09-23 12:30:45”

String → LocalDateTime の変換手順

  1. 変換対象の文字列を用意
    文字列のフォーマットを事前に確認します。フォーマットが不明な場合は自動検出(ISO 8601)を試みます。
  2. DateTimeFormatterを文字列に合わせて作成
    文字列のフォーマットと一致するパターンを DateTimeFormatter.ofPattern() で作成します。
  3. parse()メソッドで変換
    LocalDateTime.parse(文字列, formatter) を呼び出します。形式が合わない場合は DateTimeParseException がスローされます。
  4. 例外処理を実装
    try-catchブロックで DateTimeParseException を捕捉し、エラーメッセージを表示します。
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; // String → LocalDateTime String input = “2025/09/23 12:30:45”; DateTimeFormatter formatter = DateTimeFormatter.ofPattern(“yyyy/MM/dd HH:mm:ss”); try { LocalDateTime dateTime = LocalDateTime.parse(input, formatter); System.out.println(dateTime); // 2025-09-23T12:30:45 } catch (DateTimeParseException e) { System.err.println(“解析エラー: “ + e.getMessage()); }

ISO 8601形式(Tあり)の自動解析

// ISO 8601形式はフォーマット指定なしでparseが可能 String isoString = “2025-09-23T12:30:45”; LocalDateTime dateTime = LocalDateTime.parse(isoString); // 結果: 2025-09-23T12:30:45

定義済みフォーマッター定数一覧

定数名 パターン例 対応クラス
ISO_LOCAL_DATE_TIME2025-09-23T12:30:45LocalDateTime
ISO_LOCAL_DATE2025-09-23LocalDate
ISO_LOCAL_TIME12:30:45LocalTime
ISO_DATE_TIME2025-09-23T12:30:45+09:00[Asia/Tokyo]ZonedDateTime
ISO_OFFSET_DATE_TIME2025-09-23T12:30:45+09:00OffsetDateTime
ISO_INSTANT2025-09-23T03:30:45ZInstant
BASIC_ISO_DATE20250923LocalDate
ISO_WEEK_DATE2025-W39-2LocalDate
RFC_1123_DATE_TIMETue, 23 Sep 2025 12:30:45 GMTZonedDateTime

Java 日時クラスの変換フロー

変換元 変換先 主なメソッド 備考
LocalDateTimeStringdateTime.format(formatter)DateTimeFormatterが必要
StringLocalDateTimeLocalDateTime.parse(str, formatter)ISO形式はformatter省略可
LocalDateTimeZonedDateTimedateTime.atZone(ZoneId.of(“Asia/Tokyo”))タイムゾーン付与
ZonedDateTimeLocalDateTimezonedDateTime.toLocalDateTime()ゾーン情報が失われる
LocalDateTimeLocalDatedateTime.toLocalDate()時刻部分が失われる
LocalDateLocalDateTimelocalDate.atTime(12, 0) / atStartOfDay()時刻を指定する必要あり
LocalDateTimeInstantdateTime.toInstant(ZoneOffset.of(“+09:00”))オフセット指定が必要
Date(旧API)LocalDateTimedate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()Instantを経由
LocalDateTimeDate(旧API)Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant())Instantを経由
Timestamp(SQL)LocalDateTimetimestamp.toLocalDateTime()Java 8以降直接変換可
LocalDateTimeTimestamp(SQL)Timestamp.valueOf(localDateTime)Java 8以降直接変換可

よくある質問(FAQ)

最も多い原因は、入力文字列のフォーマットと DateTimeFormatter のパターンが一致していないことです。たとえば文字列が 2025/09/23 12:30:45 なのに、フォーマッターが yyyy-MM-dd HH:mm:ss(ハイフン区切り)の場合にエラーになります。また、月・日・時・分・秒の桁数が合っていない場合も原因になります(例:MMM の違い)。まずは入力文字列のフォーマットを確認し、それに合わせたパターンを指定してください。
LocalDateTime はタイムゾーン情報を持たない「ローカル日時」です。例えば 2025-09-23T12:30:45 はどの地域の時刻かが不明です。一方 ZonedDateTime はタイムゾーン(例: Asia/Tokyo)を含む絶対時刻を表します。国際化対応が必要なシステムや、異なるタイムゾーン間での時刻変換には ZonedDateTime または OffsetDateTime を使用してください。
SimpleDateFormat は Java 1.1 から存在する旧来のクラスで、スレッドアンセーフであるため共有インスタンスとして使うと問題が発生することがあります。Java 8 以降は DateTimeFormatterjava.time.formatパッケージ)の使用が推奨されています。DateTimeFormatter はイミュータブル(不変)でスレッドセーフ、かつロケール対応も優れています。
DateTimeFormatter.ofPattern("パターン", Locale.JAPANESE) のように第二引数にロケールを指定します。例えば曜日を日本語で表示する場合は EEEE パターンにロケール Locale.JAPANESE を指定すると「火曜日」のような出力が得られます。月名(MMMM)も同様に「9月」と表示されます。
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(“yyyy年M月d日(EEEE)HH:mm”, java.util.Locale.JAPANESE); LocalDateTime dt = LocalDateTime.of(2025, 9, 23, 12, 30); System.out.println(dt.format(fmt)); // 2025年9月23日(火曜日)12:30
ナノ秒を含む文字列(例: 2025-09-23T12:30:45.123456789)をparseする場合は、DateTimeFormatter.ISO_LOCAL_DATE_TIME を使うか、パターンに n(ナノ秒)を含めます。ただし SSS はミリ秒(3桁)のみ対応で、6桁のマイクロ秒は SSSSSS、9桁のナノ秒は SSSSSSSSS または n を使います。ISO形式であれば LocalDateTime.parse(str)(フォーマッター省略)でも自動対応できます。
JSON(Jackson): Spring Boot 2.x 以降はデフォルトで LocalDateTime を配列形式でシリアライズします。ISO 8601文字列にするには application.propertiesspring.jackson.serialization.write-dates-as-timestamps=false を追加するか、@JsonSerialize / @JsonDeserialize アノテーションを使います。
JPA/Hibernate: Java 8 以降の日時型は Hibernate 5.2+ で標準サポートされています。カラム型は @Column と組み合わせて自動マッピングされます。タイムゾーンを保存したい場合は ZonedDateTime の使用を検討してください。
LocalDateTime には比較用メソッドが用意されています。isBefore(other)(指定日時より前か)、isAfter(other)(指定日時より後か)、isEqual(other)(同じ日時か)、compareTo(other)(整数値で大小比較)が使えます。equals()isEqual() と同等です。タイムゾーンが異なる日時を比較する場合は、ZonedDateTime に変換してから比較してください。