我收到发票与日期(TaxPointDate),其是在时间,格式我需要将“+01:00”部分替换为“+00:00”,因为我在原来的值从“2012-10-31T00:00:00 + 01:00”更改为“ 2012-10-30T23:00:00.000Z“当我重新格式化这不是我想要的。重新格式化的日期/时转换值
我该怎么办?
感谢
我收到发票与日期(TaxPointDate),其是在时间,格式我需要将“+01:00”部分替换为“+00:00”,因为我在原来的值从“2012-10-31T00:00:00 + 01:00”更改为“ 2012-10-30T23:00:00.000Z“当我重新格式化这不是我想要的。重新格式化的日期/时转换值
我该怎么办?
感谢
这将替换 “+01:00” 部分,以 “+00:00”
String s = "2012-10-31T00:00:00+01:00".replaceAll("\\+.*", "+00:00")
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);
什么是对象类? 'java.util.Date'? – KidTempo
你用什么意思将“+01:00”部分替换为“+00:00”_? “+01:00”表示时区偏移量。你提到的两个日期代表了相同的时间点。 –
是的java.util.Date – Safi