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秒)
参考サイト
- Parse date | Level Up Lunch
- java - displaying AM and PM in small letter after date formatting - Stack Overflow
- Java日付時刻フォーマッターメモ(Hishidama's Java8 DateTimeFormatter Memo)


0 件のコメント:
コメントを投稿