Java Date.toString()显示的时区是什么?
默认情况下,方法显示的时区是什么?由于Java在中存储给定的日期,并且不包含任何明确的时区,Java Date.toString()显示的时区是什么?,java,date,timezone,Java,Date,Timezone,默认情况下,方法显示的时区是什么?由于Java在中存储给定的日期,并且不包含任何明确的时区,date.toString()只是显示主机的默认时区,还是?它使用TimeZone.getDefault()显示,反过来,它将默认为运行它的操作系统(即主机)的时区。所以在实践中,它们将是一样的 请注意,Java日期并不是真正的日期!它是一个时间上的瞬间,表示为自新纪元开始以来的毫秒偏移量。它仍然包含引用年、月等的方法,但这些方法都已弃用。绝不能将Date对象当作日期来使用 使用日历(尽管这可能比日期)或
date.toString()
只是显示主机的默认时区,还是?它使用TimeZone.getDefault()
显示,反过来,它将默认为运行它的操作系统(即主机)的时区。所以在实践中,它们将是一样的
请注意,Java日期并不是真正的日期!它是一个时间上的瞬间,表示为自新纪元开始以来的毫秒偏移量。它仍然包含引用年、月等的方法,但这些方法都已弃用。绝不能将Date
对象当作日期来使用
使用日历
(尽管这可能比日期
)或像JODA这样的像样的库更坏
它是否显示默认时区
为了主人,或者
时区。getDefault()
后者(与前者相同,除非在某个地方显式设置)。然而,这是从源代码中收集到的信息,因此应该将其视为一个实现细节。如果您想要特定的可重复行为,您应该自己实现。是否有可能给定一个东部标准时间(EST)的主机时区,该日期。toString()有时会显示时区EST,但其他时间会显示东部夏时制(EDT)?我在
ToStringBuilder.reflectionString(Object)
中观察到了这种奇怪的行为,根据,它使用Date.toString()
来显示Date
对象。我认为您的系统可能会使用适合您的区域设置的任何夏令时设置(您的系统管理员会知道)。所以在DST期间,我希望默认时区是EDT(假设EDT是EST的夏令时版本)。我的问题不够清楚。给定一个包含多个Date
对象的对象,ToStringBuilder.ReflectionString(对象)
显示一些带有EST时区的日期和其他带有EDT的日期。它不应该在主机时区中显示它们吗?在本例中为EST?@Derek-您使用的是一个时区,根据日期将日期显示为EST或EDT。。。不是说“现在”是否在夏令时。“它不应该把它们都显示在东道主时区吗”-这对大多数人来说真的很困惑。(“那天我早上9点上班,但那台愚蠢的电脑说是上午10点。”)斯蒂芬C,我同意你的说法,这个时区的输出很奇怪,但罪魁祸首不是我们的代码。要么是JAX-WS引用实现(jaxws rt)对将从输入SOAP消息反序列化的日期转换到哪个时区感到困惑,要么是Apache Commons Lang 2.4 toString Builder.ReflectionString(对象)或Date.toString()在不正确的时区中显示多个“时间内的实例”。我希望日期显示为时区EST,操作系统和JVM的时区,而不是EDT。