Groovy无法解析字符串日期

Groovy无法解析字符串日期

问题描述:

我想使用Groovy解析StringDateGroovy无法解析字符串日期

但我不能解析到以下java.lang.StringDate

我的代码如下所示。

import groovy.time.* 

def date = new Date.parse("EEE MMM d HH:mm:ss z yyyy", "Fri Aug 28 11:12:11 +0000 2015") 

,但我得到类似下面的错误:

Unparseable date: "Fri Aug 28 11:12:11 +0000 2015". Stacktrace follows: 
java.text.ParseException: Unparseable date: "Fri Aug 28 11:12:11 +0000 2015" 
    at java.text.DateFormat.parse(DateFormat.java:366) 

我如何解析呢?

+0

不过是你进入的数据'周五8月28日11时12分十一秒+0000 2015'?这是来自一个表单还是什么? –

+0

它只是字符串 – SpaceNet

您需要设置相应的Locale

Locale.setDefault(Locale.US) 

def date = Date.parse("EEE MMM dd HH:mm:ss Z yyyy", "Fri Aug 28 11:12:11 +0000 2015") 

其他错误是dd而不是dZ而不是z

+0

它似乎工作,谢谢!但是,结果是“Fri Aug 28 21:28:48 JST 2015”而不是“Fri Aug 28 21:28:48 +0000 2015” – SpaceNet

+1

也不要忘记将语言环境设置回您所需的内容。我宁愿使用'SimpleDateFormat'来设置适当的语言环境,而不是在这种情况下插入全局状态。 – cfrick

+1

@ saw303如果它是静态的,那么也不需要new操作符。 – Opal

还有就是名字古怪的Date.parseToStringDate这需要这种格式是语言环境无关:

groovy:000> Date.parse("EEE MMM dd HH:mm:ss Z yyyy", "Fri Aug 28 11:12:11 +0000 2015") 
Unparseable date: "Fri Aug 28 11:12:11 +0000 2015" 
groovy:000> Date.parseToStringDate("Fri Aug 28 11:12:11 +0000 2015") 
===> Fri Aug 28 13:12:11 CEST 2015 
groovy:000> Locale.default 
===> ja 
groovy:000> Locale.default = Locale.US 
===> en_US 
groovy:000> Date.parse("EEE MMM dd HH:mm:ss Z yyyy", "Fri Aug 28 11:12:11 +0000 2015") 
===> Fri Aug 28 13:12:11 CEST 2015 
groovy:000> Date.parseToStringDate("Fri Aug 28 11:12:11 +0000 2015") 
===> Fri Aug 28 13:12:11 CEST 2015