如何正确解析时区的日期?

Cox*_*xer 5 parsing scala date simpledateformat

我正在尝试使用以下代码将一串文本转换为日期:

//Input String
str = "14/01/26,12:13:13+00"

//Format
format = new java.text.SimpleDateFormat("yy/MM/dd,HH:mm:ssz")

//Conversion
format.parse(str)
Run Code Online (Sandbox Code Playgroud)

但我得到以下内容:

例外:无法解释的日期:"14/01/26,12:13:13 + 00"

为了正确解析这个日期,我的格式如何更改?

sen*_*nia 8

+00是无效的时区.它应该是+0000.

您可以添加00str和替换zZ的模式使用RFC 822 time zone格式:

new java.text.SimpleDateFormat("yy/MM/dd,HH:mm:ssZ").parse(str + "00")
// java.util.Date = Sun Jan 26 16:13:13 MSK 2014
Run Code Online (Sandbox Code Playgroud)

java.util.Date(和java.text.SimpleDateFormat)不是项目的最佳选择.有关详细信息,请参阅此答案.

作为奖励DateTimeFormat,Joda-Time您可以str无需修改即可解析:

// I'm using the same pattern with `Z` here
DateTimeFormat.forPattern("yy/MM/dd,HH:mm:ssZ").parseDateTime(str)
// org.joda.time.DateTime = 2014-01-26T16:13:13.000+04:00
Run Code Online (Sandbox Code Playgroud)