Parsing 使用时区重新格式化字符串日期

Parsing 使用时区重新格式化字符串日期,parsing,date,groovy,timezone,format,Parsing,Date,Groovy,Timezone,Format,我对Groovy相当陌生(但已经很喜欢它了)。我对编码并不陌生,但到目前为止还没有多少经验 我在干什么? 我从excel文件中提取某些信息,从中创建XML(SOAP)消息,并将其转发到web服务。到目前为止,除了日期转换之外,一切正常 我正在将字符串日期保存到变量 odate = 'Wed Oct 31 00:00:00 CET 2012' 我需要把这个日期改成 “2012年10月31日10:09:00”(年月日HH:MM:ss) 我试图将日期解析为,但得到的只是一个异常 String od

我对Groovy相当陌生(但已经很喜欢它了)。我对编码并不陌生,但到目前为止还没有多少经验

我在干什么? 我从excel文件中提取某些信息,从中创建XML(SOAP)消息,并将其转发到web服务。到目前为止,除了日期转换之外,一切正常

我正在将字符串日期保存到变量

odate = 'Wed Oct 31 00:00:00 CET 2012' 
我需要把这个日期改成

“2012年10月31日10:09:00”(年月日HH:MM:ss)

我试图将日期解析为,但得到的只是一个异常

String odate = 'Wed Oct 31 00:00:00 CET 2012'
def parsedodate = new Date().parse('E MMM dd H:m:s z yyyy', odate)

println parsedodate.format('MM/dd/yyyy h:m:s')
抛出异常 31.10.2012 10:18:25 org.codehaus.groovy.runtime.StackTraceUtils消毒

警告:消毒堆栈跟踪:

java.text.ParseException:不可解析日期:“Wed Oct 31 00:00:00 CET 2012”


现在,经过一点阅读和几轮尝试&错误之后,我发现解析方法似乎只解释德国日期。在手动将字符串日期更改为德语格式(即我所在的位置)后,以下操作生效

但是,我需要解析器接受英文日期格式。
我做错了什么

您需要使用一些Java来访问区域设置感知的SimpleDataFormat实例

SimpleDateFormat englishDateFormat = new SimpleDateFormat( englishPattern , Locale.ENGLISH);
SimpleDateFormat germanDateFormat = new SimpleDateFormat( germanPattern , Locale.GERMAN);

Date englishDate = englishDateFormat.parse( odate );
Date germanDate = germanDateFormat.parse( odate );

String englishOutput = englishDate .format( englishPattern );
String germanOutput = germanDate .format( germanPattern );

针对您的问题,groovy的整体解决方案是:

import java.text.SimpleDateFormat
odate="Wed Oct 31 00:00:00 CET 2012"

englishPattern="E MMM dd H:m:s z yyyy"

SimpleDateFormat englishDateFormat = new SimpleDateFormat( englishPattern , Locale.ENGLISH);
//SimpleDateFormat germanDateFormat = new SimpleDateFormat( germanPattern , Locale.GERMAN);

Date englishDate = englishDateFormat.parse( odate );
//Date germanDate = germanDateFormat.parse( odate );

String englishOutput = englishDate .format( englishPattern );
//String germanOutput = germanDate .format( germanPattern );

englishDate.format("MM/dd/yyyy hh:mm:ss")

谢谢你的提示。这就是我要找的。谢谢你提供的更多信息。
import java.text.SimpleDateFormat
odate="Wed Oct 31 00:00:00 CET 2012"

englishPattern="E MMM dd H:m:s z yyyy"

SimpleDateFormat englishDateFormat = new SimpleDateFormat( englishPattern , Locale.ENGLISH);
//SimpleDateFormat germanDateFormat = new SimpleDateFormat( germanPattern , Locale.GERMAN);

Date englishDate = englishDateFormat.parse( odate );
//Date germanDate = germanDateFormat.parse( odate );

String englishOutput = englishDate .format( englishPattern );
//String germanOutput = germanDate .format( germanPattern );

englishDate.format("MM/dd/yyyy hh:mm:ss")