将带有偏移量的日期字符串转换为忽略偏移量的自定义格式
Converting Date string with offset to custom format ignoring the offset
我有一个带偏移量的输入日期字符串,我想将其转换为自定义格式。问题是,当我使用 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)。我该如何避免这种情况?
谢谢。
由于您对时区不感兴趣,请使用 LocalDateTime。
您需要解析日期保留时区,如下所示:
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
我有一个带偏移量的输入日期字符串,我想将其转换为自定义格式。问题是,当我使用 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)。我该如何避免这种情况?
谢谢。
由于您对时区不感兴趣,请使用 LocalDateTime。
您需要解析日期保留时区,如下所示:
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