2015-08-28 145 views
2

我想使用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

回答

1

您需要設置相應的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

1

還有就是名字古怪的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