我收到發票與日期(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