Java:String型⇒Calendar型への変換方法

JavaでString型の日付文字列をCalendar型へ変換する場合、
基本的には「文字列 → Date → Calendar」の順で変換します。
フォーマットを正しく指定すれば、安全にCalendar型へ変換できます。

日付フォーマットが決まっている場合は SimpleDateFormat を使用し、
Java 8以降では LocalDateTime を経由して変換する方法も利用できます。

本記事では、実務でよく使う変換方法と注意点を分かりやすく解説します。


目次

String型をCalendar型へ変換する基本方法

最も一般的な方法は、SimpleDateFormat を使って Date に変換し、
その後 Calendar に設定する方法です。

例:yyyy/MM/dd 形式の文字列を変換する

この処理の流れは次の通りです。

処理内容
SimpleDateFormat文字列の形式を指定
parse()String → Date に変換
Calendar.setTime()Date → Calendar に設定

時刻を含む文字列を変換する方法

時刻情報が含まれる場合は、フォーマットも時刻に合わせます。

例:yyyy/MM/dd HH:mm:ss 形式

フォーマット指定例

文字列形式フォーマット
2026/01/31yyyy/MM/dd
2026-01-31yyyy-MM-dd
2026/01/31 10:20:30yyyy/MM/dd HH:mm:ss
20260131102030yyyyMMddHHmmss

Java 8以降:LocalDateTime経由で変換する方法

Java 8以降では、java.time パッケージを使う方法が推奨されます。

例:LocalDateTime → Calendar

この方法のメリット

項目内容
スレッドセーフSimpleDateFormatより安全
可読性フォーマット指定が明確
推奨API将来的にも安定

例外処理は必ず実装する

parse() メソッドは ParseException を投げる可能性があります。
必ず例外処理を記述してください。


タイムゾーンを指定して変換する方法

サーバーと表示時刻がズレる場合は、タイムゾーンを明示的に指定します。


よくある変換エラーと原因

エラー内容主な原因
ParseExceptionフォーマットと文字列が不一致
日付がずれるタイムゾーン未指定
月がずれるCalendarの月は0始まり

月が0始まりである点に注意


よくある質問(Q & A)

CalendarとDateはどちらを使うべきですか?

新規開発では LocalDateLocalDateTime を推奨します。ただし、既存システムとの互換性が必要な場合はCalendarを使用します。

SimpleDateFormatはスレッドセーフですか?

スレッドセーフではありません。マルチスレッド環境では個別に生成してください。

yyyyとYYYYの違いは何ですか?

yyyyは暦年、YYYYは週ベース年です。通常はyyyyを使用します。

変換できない場合のデバッグ方法は?

入力文字列とフォーマットをログ出力して一致しているか確認してください。


まとめ

String型からCalendar型への変換は、
「文字列 → Date → Calendar」の順で行います。

日付フォーマットを正確に指定し、例外処理とタイムゾーンに注意すれば、
安全にCalendar型へ変換できます。

Java 8以降では LocalDateTime を経由する方法も有効です。
既存仕様に合わせて最適な方法を選択してください。

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
目次
0
あなたの考えが大好きです、コメントしてください。x