【发布时间】:2017-11-15 12:50:53
【问题描述】:
这是我尝试在 Android 设备上以 UTC 格式获取当前日期的 java 代码:
public static Date getCurrentDateUTC() {
try {
TimeZone timeZoneUTC = TimeZone.getTimeZone("UTC");
Date localTime = new Date();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss Z");
dateFormat.setTimeZone(timeZoneUTC);
String dateUTCAsString = dateFormat.format(localTime);
Debug.d(TAG, "getCurrentDateUTC: dateUTCAsString = " + dateUTCAsString);
Date dateResult = dateFormat.parse(dateUTCAsString);
Debug.d(TAG, "getCurrentDateUTC: dateResult = " + dateResult);
return dateResult;
} catch (ParseException e) {
Debug.e(TAG, "getCurrentDateUTC: ", e);
return null;
}
}
结果:
dateUTCAsString = 2017-11-15T12:54:25 +0000
dateResult = Wed Nov 15 14:54:25 EET 2017
如您所见,dateUTCAsString IS CORRECT 以 UTC 显示当前日期,但在 parse 之后,dateResult 不正确。为什么?
【问题讨论】:
-
鉴于 EET 是 UTC+2,对我来说看起来是正确的。您希望看到什么?
-
日期必须是 UTC。所以我希望看到:Wed Nov 15 12:54:25 UTC 2017
-
Date没有任何特定时区。Date#toString()以您当地的 EET 时区输出。 -
结果 localTime 和 dateResult 相等。但这是不正确的。他们之间的时间相差 2 小时。
-
6 小时肯定。
标签: java android datetime utc date-parsing