我从时区 A (dBDate) 的数据库中获取日期,并且从我目前在时区 B (deviceNowDate) 中使用的我的 android 设备获取当前日期,我需要找到两个日期之间的差异,单位为毫秒,所以我认为我应该将这两个日期都转换为 1 个硬编码时区(比如时区 C),然后找出差异。如何将这两个日期转换为另一个时区?
它们是日历对象。
dbDate.setTimeZone();
这会改变时区并为我转换日期/时间吗?
我从时区 A (dBDate) 的数据库中获取日期,并且从我目前在时区 B (deviceNowDate) 中使用的我的 android 设备获取当前日期,我需要找到两个日期之间的差异,单位为毫秒,所以我认为我应该将这两个日期都转换为 1 个硬编码时区(比如时区 C),然后找出差异。如何将这两个日期转换为另一个时区?
它们是日历对象。
dbDate.setTimeZone();
这会改变时区并为我转换日期/时间吗?
由于存储在数据库中的日期已经是 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);