我有一个带有偏移的输入日期字符串,我想将其转换为自定义格式。问题是,当我使用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)。我该如何避免这种情况?
感谢。
答案 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