Date.toString()显示什么时区?
默认情况下, java.util.Date.toString()
方法显示的时区是什么? 由于Java Date
以UTC Date.toString()
存储给定日期且不包含任何显式时区, Date.toString()
只显示主机的默认时区,或TimeZone.getDefault()
?
它使用TimeZone.getDefault()
显示,而TimeZone.getDefault()
依次默认为运行它的操作系统的时区(即主机)。 所以在实践中,它们将是同一件事
请注意,Java日期并不是真正的日期! 它是一个瞬间 ,由纪元开始以来的毫秒偏移量表示。 它仍然包含引用年 , 月等的方法,但这些方法都已弃用。 您绝不应该使用Date
对象,就像它是一个日期一样。
使用Calendar
(虽然这可能比Date
更加破碎)或像JODA这样体面的图书馆。
它是否显示主机的默认时区,或TimeZone.getDefault()?
后者(除非你明确地在某处设置它,否则与前者相同)。 但是,这是从源代码中发现的信息,因此应将其视为实现细节。 如果您想要特定的可重复行为,您应该自己实现它。