"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
参照