【发布时间】:2013-10-30 23:12:39
【问题描述】:
奇怪的东西。我有 SQLite Android 数据库,日期保持为长值。我将它们读作 Date 对象,例如:
new Date (cursor.getLong(4))
接下来在显示时,我使用 toString() 方法将 Date 对象转换为 String。但是有时显示的字符串包含 CET,有时包含 CEST。
当然,添加时区信息这一事实并不奇怪。令人惊讶的是,在同一设备上,值同时从数据库中获取,是长值,因此不包含任何区域时间信息,java 有时会添加 CET,有时会添加 CEST。为什么会有这样的差异?
唯一的区别是给出结果 CEST 的 long 值的时间等于 00:00:00,而给出结果 CET 的 long 值的时间不同。
有什么想法吗?
【问题讨论】:
-
我认为这取决于特定日期所在的一年中的时间。请提及导致不同时区的两个日期。
-
我正在同时进行转换 - 在第二次转换之后进行一次转换。并且 AFAIU 日期只要保留没有任何区域信息,如果在将日期转换为长时考虑从 java 程序区域存储(GMT 时间保留为长值),如果来自其他程序,它取决于它是如何工作的。
-
A
Date对象表示从称为“纪元”的瞬间开始的毫秒数。即使将Date对象转换为long,也不会使用区域信息。 -
好的,为什么在将 long 转换为 Date 并在 String 旁边时,我得到两个不同的时区?