2013-08-23 27 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);