我收到一张日期 (TaxPointDate) 的发票,格式为“2012-10-31T00:00:00+01:00”
但是,我需要将“+01:00”部分替换为“+00:00”,因为我遇到了困难,其中值从原始的“2012-10-31T00:00:00+01:00”变为“2012-10-30T23:00:00.000Z”当我重新格式化这不是我想要的。
我该怎么办?
谢谢
我收到一张日期 (TaxPointDate) 的发票,格式为“2012-10-31T00:00:00+01:00”
但是,我需要将“+01:00”部分替换为“+00:00”,因为我遇到了困难,其中值从原始的“2012-10-31T00:00:00+01:00”变为“2012-10-30T23:00:00.000Z”当我重新格式化这不是我想要的。
我该怎么办?
谢谢
也许这对你有用。但我认为你不会在你的应用程序中使用它。问题是,我更改了 DefaultTimeZone,因此每个 Date 的输出都将是“GMT”。我还添加了到 TimeZones 之间的偏移量,所以你的输出是你的原始时间,最后是 +0000。
但请注意,这会更改您的日期。它将时间偏移添加到小时,并且您的原始日期和新日期不相等。
“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);
这会将“+01:00”部分替换为“+00:00”
String s = "2012-10-31T00:00:00+01:00".replaceAll("\\+.*", "+00:00")