0

奇怪的事情。我有 SQLite Android 数据库,其日期保持为长值。我将它们读作 Date 对象,例如:

new Date (cursor.getLong(4))

接下来在显示时,我使用 toString() 方法将 Date 对象转换为 String。但是有时显示的字符串包含 CET,有时包含 CEST。

当然,添加时区信息这一事实并不奇怪。令人惊讶的是,在同一设备上,值同时从数据库获取,是长值,因此不包含任何区域时间信息,java 有时会添加 CET,有时会添加 CEST。为什么会有这样的差异?

唯一的区别是给出结果 CEST 的 long 值的时间等于 00:00:00,而给出结果 CET 的 long 值的时间不同。

任何想法?

4

1 回答 1

2

这些值本身完全与时区无关,但您的设备不是。您的设备有两个时区,CET 和 CEST,作为其区域设置的一部分。CEST 中给出了夏令时生效/现在/将要生效期间的日期,其他日期报告为 CET。

如果您将设备设置为不遵守夏令时的区域设置,则只会报告一个时区。

要了解为什么这是有道理的,请考虑您是否问我现在几点了,我说“13:35 CEST”。由于 CEST 是 UTC+2,我是对的,但您可能会感到困惑。因为 CEST 在一年中的这个时候不使用,所以在 CET 中给出时间才有意义。这就是时区因日期而异的原因。

于 2013-10-30T23:32:09.423 回答