将具有偏移量的日期字符串转换为自定义格式,忽略偏移量

时间:2017-03-26 01:09:44

标签: java jodatime

我有一个带有偏移的输入日期字符串,我想将其转换为自定义格式。问题是,当我使用Joda DateTimeFormatter进行转换时,生成的字符串位于我当地的时区。如何转换字符串,但保留时区原样?

这就是我现在所拥有的:

public String getFormattedDate(String dateTimestamp) {
        DateTimeFormatter fmt = DateTimeFormat.forPattern("MMM d, yyyy h:m a");
        return fmt.print(new DateTime(dateTimestamp));
        //return new LocalDateTime(dateTimestamp).toString();
}

这就是我得到的:

input: 2017-03-20T00:00:00       | output: Mar 20, 2017 12:0 AM
input: 2017-03-23T15:12:24-04:00 | output: Mar 23, 2017 12:12 PM

当它是午夜时,我没有得到任何抵消(例1)。所以这很好。但是,在第二个例子中,我得到一个偏移量(时区是EST)。我的代码将其转换为我当地时间(PST)。我该如何避免这种情况?

感谢。

2 个答案:

答案 0 :(得分:0)

由于您对时区不感兴趣,请使用LocalDateTime。

答案 1 :(得分:0)

您需要解析日期保留时区,如下所示:

return fmt.print(ISODateTimeFormat.dateTimeParser().withOffsetParsed().parseDateTime(dateTimestamp));

方法withOffsetParsed()可以解决问题。有了这段代码,我有以下内容:

input: 2017-03-20T00:00:00       | output: Mar 20, 2017 12:0 AM
input: 2017-03-23T15:12:24-04:00 | output: Mar 23, 2017 3:12 PM