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()?

后者(除非你明确地在某处设置它,否则与前者相同)。 但是,这是从源代码中发现的信息,因此应将其视为实现细节。 如果您想要特定的可重复行为,您应该自己实现它。