2013-08-23 32 views
0

我收到發票與日期(TaxPointDate),其是在時間,格式我需要將「+01:00」部分替換爲「+00:00」,因爲我在原來的值從「2012-10-31T00:00:00 + 01:00」更改爲「 2012-10-30T23:00:00.000Z「當我重新格式化這不是我想要的。重新格式化的日期/時轉換值

我該怎麼辦?

感謝

+0

什麼是對象類? 'java.util.Date'? – KidTempo

+1

你用什麼意思將「+01:00」部分替換爲「+00:00」_? 「+01:00」表示時區偏移量。你提到的兩個日期代表了相同的時間點。 –

+0

是的java.util.Date – Safi

回答

0

這將替換 「+01:00」 部分,以 「+00:00」

String s = "2012-10-31T00:00:00+01:00".replaceAll("\\+.*", "+00:00") 
1

Mayby這會爲你工作。但我認爲你不會在你的應用中使用它。問題是,我更改了DefaultTimeZone,所以每個Date的輸出將會是'GMT'。我還添加了到TimeZones之間的偏移量,所以你的輸出結果是你最初的時間+0000。

但請注意,這會改變你的日期。它將timeoffset添加到小時,您的原始日期和新的日期不相等。

「2012-10-31T00:00:00 + 01:00」和「2012-10-30T23:00:00 + 00:00」是相等的日期。輸出僅因不同時區而異。

SimpleDateFormat originalDateParser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); 
    Date date = originalDateParser.parse("2012-10-31T00:00:00+0100"); 
    System.out.println("Date Input" + originalDateParser.format(date)); 

    Calendar cal = Calendar.getInstance(); 
    cal.setTime(date); 
    TimeZone timeZoneInputDate = cal.getTimeZone(); 

    TimeZone.setDefault(TimeZone.getTimeZone("GMT")); 

    System.out.println("TimeZone InputDate: " + timeZoneInputDate.getDisplayName()); 
    cal.add(Calendar.MILLISECOND, (int) timeZoneInputDate.getOffset(date.getTime())); 

    SimpleDateFormat newDateParser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); 
    System.out.println(newDateParser.format(cal.getTime())); 

    TimeZone.setDefault(null);