LoginSignup
2
1

More than 5 years have passed since last update.

"dd/MMM/yyyy"な日付文字列で Invalid format って言われたら。

Last updated at Posted at 2014-12-12

"17/Aug/2014"という日付文字列をパースしようとしたらある環境では動くのに、ある環境では Invalid format と言われ java.lang.IllegalArgumentException が発生しました。
これはロケール設定に依存した問題なので、プログラムでロケールを指定してパース出来るようにします。

環境

  • Mac OS X Version 10.9.5
  • Scala 2.10.4
  • Java 1.7.0_71
  • joda-time 2.3

確認

scala> import java.util.Locale
scala> import org.joda.time.DateTime
scala> import org.joda.time.format.DateTimeFormat
scala> import org.joda.time.DateTimeZone
scala> DateTimeFormat.forPattern("dd/MMM/yyyy:HH:mm:ss Z").withZoneUTC().withLocale(Locale.ENGLISH).parseDateTime("17/Aug/2014:00:00:05 +0900")
res1: org.joda.time.DateTime = 2014-08-16T15:00:05.000Z

scala> DateTimeFormat.forPattern("dd/MMM/yyyy:HH:mm:ss Z").withZoneUTC().withLocale(Locale.JAPANESE).parseDateTime("17/Aug/2014:00:00:05 +0900")
java.lang.IllegalArgumentException: Invalid format: "17/Aug/2014:00:00:05 +0900" is malformed at "Aug/2014:00:00:05 +0900

参照

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1