Java – DateからStringにしたものの逆変換

DateからStringにしたものを戻す方法

System.out.println(new Date())
上記のように一度デフォルトで出力してしまったものをDate形式に戻したいとなったことはないでしょうか?
今回はDateクラスのtoStringメソッドで変換されたものを、SimpleDateFormatで戻す方法を解説します。
SimpleDateFormatの解説はこちらを参照してください。

toStringメソッド

JavaではDateクラスのtoStringメソッドで文字列に変換されます。
形式は以下のようになっています。

Date オブジェクトを次の形式の String に変換します。
dow mon dd hh:mm:ss zzz yyyy
説明

  • dow は曜日 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)
  • mon は月 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)
  • dd は 2 桁の 10 進数である月の日 (01 〜 31)
  • hh は 2 桁の 10 進数である日の時 (00 〜 23)
  • mm は 2 桁の 10 進数である時の分 (00 〜 59)
  • ss は 2 桁の 10 進数である分の秒 (00 〜 61)
  • zzz はタイムゾーン (夏時間を反映する場合がある)。標準タイムゾーンの省略名には、parse メソッドで認識されるものも含まれる。タイムゾーンの情報がない場合、zzz は空で、文字は含まれない
  • yyyy は 4 桁の 10 進数である年

toStringで変換された文字列の逆変換

普通に考えればSimpleDateFormatでparseするだけのように思います。

しかし、このようにするとParseExceptionが出てしまい変換することができませんでした。
調べてみたところ、dow mon zzzの部分に数字ではなく、英語が含まれているため、どの言語か判断できずにexceptionが発生してしまうようです。
そこでnewする際の引数にlocaleを追加してやればいいようです。

Java – DateからStringにしたものの逆変換」への1件のフィードバック

  • herondey

    環境によるのかもしれませんが、上記のフォーマット指定では上手くいかず、
    下記のようにしたら上手くいきました。
    SimpleDateFormat sdf = new SimpleDateFormat(“EEE MMM dd hh:mm:ss Z yyyy”, Locale.ENGLISH);

    ご参考まで。

コメントを残す

メールアドレスが公開されることはありません。