在Groovy / Java中将UTC日期转换为GMT

时间:2012-09-26 14:11:27

标签: groovy utc datetime-format gmt date-conversion

我正在使用SoupUI我需要调整我在回复GMT日期/时间时返回的日期/时间(UTC)。我回复的日期如下:

2012-11-09T00:00:00+01:00

我想将此转换为

2012-11-08T23:00:00Z

不幸的是,我缺乏Java技巧,因此还有Groovy skils可以自己完成。我做了很多o搜索日期转换,但直到现在我仍然无法找到我想要的东西。我会继续寻找。如果我设法得到解决方案,那么我会在这里发布。

1 个答案:

答案 0 :(得分:3)

假设时区部分没有冒号,我相信这应该有效:

// Your input String (with no colons in the timezone portion)
String original = '2012-11-09T00:00:00+0100'

// The format to read this input String
def inFormat = new java.text.SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ssZ" )

// The format we want to output
def outFormat = new java.text.SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss'Z'" )
// Set the timezone for the output
outFormat.timeZone = java.util.TimeZone.getTimeZone( 'GMT' )

// Then parse the original String, and format the resultant
// Date back into a new String
String result = outFormat.format( inFormat.parse( original ) )

// Check it's what we wanted
assert result == '2012-11-08T23:00:00Z'

如果 在TimeZone中有一个冒号,则此任务需要Java 7(或者像JodaTime这样的日期处理框架),你可以改变前两行到:

// Your input String
String original = '2012-11-09T00:00:00+01:00'

// The format to read this input String (using the X
// placeholder for ISO time difference)
def inFormat = new java.text.SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ssX" )