0

我从时区 A (dBDate) 的数据库中获取日期,并且从我目前在时区 B (deviceNowDate) 中使用的我的 android 设备获取当前日期,我需要找到两个日期之间的差异,单位为毫秒,所以我认为我应该将这两个日期都转换为 1 个硬编码时区(比如时区 C),然后找出差异。如何将这两个日期转换为另一个时区?

它们是日历对象。

dbDate.setTimeZone();

这会改变时区并为我转换日期/时间吗?

4

1 回答 1

2

由于存储在数据库中的日期已经是 UTC,您可以立即使用该值。或者另一种方法是获取一个Calendar实例并使用setTimeInMillis(long millis).

对于设备上的当前日期和时间,调用Calendar.getInstance()将返回一个Calendar带有设备时区、日期和时间的值。

getTimeInMillis()将从纪元返回 UTC 毫秒数,与时区无关。

尝试

long dbMillis = ... // get date value from DB, in UTC already

Calendar cal = Calendar.getInstance(); // get device's date time with
                                       // default device time zone
long now = cal.getTimeInMillis(); // returns device's date time in UTC

long diff = Math.abs(now - dbMillis);
于 2013-10-30T15:21:48.040 回答