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 件のコメント:
コメントを投稿