2012-09-26 70 views
0

我正在與SoupUI合作,我需要調整一個日期/時間(UTC),以便我回復GMT日期/時間。我回來的輸入反應的日期看起來followes:在Groovy/Java中將UTC日期轉換爲GMT

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

我想將其轉換爲

2012-11-08T23:00:00Z 

不幸的是我缺乏的Java skils,因此也支持Groovy skils才能夠做到這一點在我自己的。我做了很多日期轉換搜索,但直到現在我仍然無法找到我正在尋找的東西。我會繼續搜索。如果我設法得到解決方案,那麼我會在這裏發佈。

+0

歡迎來到Stack Overflow!我們鼓勵你[研究你的問題](http://stackoverflow.com/questions/how-to-ask)。如果你已經[嘗試了某些東西](http://whathaveyoutried.com/),請將其添加到問題中 - 如果沒有,請先研究並嘗試您的問題,然後再回來。 – 2012-09-27 16:01:10

回答

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' 

如果有在時區冒號,你需要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") 
+0

感謝這確實做了我需要它做的事情。 – user1700478