所以时间格式化和调整一直是我在编程中最大的克星,我在 Android/Java 中遇到了一些我无法弄清楚的问题。我从以 UTC 格式格式化的服务器获取时间戳(这是一个示例2016-06-17T18:30:00-07:00。现在这个时间需要格式化为用户本地时间(所以对于 PST 中的用户来说)应该显示为上午 11 点 30 分),但到目前为止,无论我尝试什么,我都会得到上午 1 点或下午 6 点 30 分(所以我知道我做错了什么,我只是不知道是什么)。这就是我一直在尝试做的
public static DateTime convertISOStringToDate(String inputString) {
//setup the ISO Date Formatter with GMT/UTC format
DateTimeFormatter formatter = ISODateTimeFormat.dateTimeParser()
.withLocale(Locale.US)
.withZone(DateTimeZone.forOffsetHours(0));
DateTime dateTime = formatter.parseDateTime(inputString);
//now convert the datetime object to a local date time object
DateTimeFormatter localFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")
.withZone(DateTimeZone.getDefault());
String localString = localFormatter.print(dateTime);
DateTime localDateTime = localFormatter.parseDateTime(localString);
return localDateTime;
所以此时我已经凌晨 1:30,所以我知道我在转换过程中的某个地方搞砸了,但我无法弄清楚。我一直在尝试用谷歌搜索,但到目前为止还没有发现太多使用 ISODateTimeFormat 解析器的东西,所以当我尝试它们时它们也不起作用。