2015-11-06

【備忘録】文字列を解析して日付時刻オブジェクトを生成 - Java

Java で、とあるデータから取り出した "October 1, 2015 10:36:58 am" のような文字列を、日付時刻オブジェクトへ変換する際に、エラーなく parse するのに苦労しましたので、備忘録として残しておきます。

データから取り出した日時/時刻を表す文字列は、できるだけ元のままでオブジェクトへ変換したかったのですが、am/pm の部分だけは、日付時刻クラスの parse メソッドで、小文字が許容されなかったので、やむなく parse 直前で大文字に置き換えています。

動作を確認した環境は次の通りです。

  • OS: Fedora 22 (x86_64)
  • Java: Java SE 1.8.0_65 (jdk1.8.0_65-1.8.0_65-fcs.x86_64)
  • IDE: NetBeans IDE 8.0.2

サンプルプログラムを以下に示しました。

package datetimetest;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class DateTimeTest {

    public static void main(String[] args) {
        Locale.setDefault(Locale.ENGLISH);

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM d, yyyy   h:m:s a");
        String strDateTime = "October 1, 2015   10:36:58 am";

        LocalDateTime localDateTime = LocalDateTime.parse(strDateTime.replace("am", "AM").replace("pm", "PM"), formatter);
        System.out.println(localDateTime);
    }
}

実行例

NetBeans 上で実行した例を下記に示します。

run:
2015-10-01T10:36:58
ビルド成功(合計時間: 0秒)

参考サイト

  1. Parse date | Level Up Lunch
  2. java - displaying AM and PM in small letter after date formatting - Stack Overflow
  3. Java日付時刻フォーマッターメモ(Hishidama's Java8 DateTimeFormatter Memo)

 

0 件のコメント: