天天看點

java如何解析帶時區的日期,java – Joda時間解析一個帶時區的日期,并保留該時區...

我想解析一個日期,它是使用特定的時區建立的,将其轉換為格式并傳回。轉換工作,但時區偏移總是設定為0000,根據需要添加/減去時差。如何獲得格式并保持偏移正确?

我期待這樣:2012-11-30T12:08:56.23 07:00

但是得到這個:2012-11-30T05:08:56.23 00:00

執行:

public static final String ISO_8601_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSZZ";

public static String formatDateToISO8601Standard(Date date) {

DateTime dateTime = new DateTime(date);

DateTimeFormatter df = DateTimeFormat.forPattern(ISO_8601_DATE_FORMAT);

return dateTime.toString(df);

}

測試類:

private static final String DATE_WITH_TIMEZONE = "30 11 2012 12:08:56.235 +0700";

private static final String EXPECTED_DATE_WITH_TIMEZONE = "2012-11-30T12:08:56.23+07:00";

@Test public void testFormattingDateWithSpecificTimezone() throws Exception {

String result = JodaDateUtil.formatDateToISO8601Standard(createDate(DATE_WITH_TIMEZONE));

assertEquals("The date was not converted correctly", EXPECTED_DATE_WITH_TIMEZONE, result); }

private Date createDate(String dateToParse) throws ParseException {

DateTimeFormatter df = DateTimeFormat.forPattern("dd MM yyyy HH:mm:ss.SSS Z");

DateTime temp = df.parseDateTime(dateToParse);

Date date = temp.toDate();

return date; }