如何将日历对象转换为特定时区

时间:2013-10-30 13:59:45

标签: java android datetime android-calendar android-date

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

它们是日历对象。

dbDate.setTimeZone();

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

1 个答案:

答案 0 :(得分: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);