是否有可用的通用日期格式?

Is there any generic date format available?

我在一个脚本中使用格式 "yyyy-MM-dd_hhmmss" 并在我的脚本中使用它。 如果我修改系统中的地区(时区)、日期,它会打破这种格式。

是否有无论系统时钟如何设置时间/时区都始终有效的通用日期格式?

你的问题不清楚。

没有神奇的解析模式

如果您需要一种神奇的解析模式来处理日期时间值的任何可能的传入文本表示,答案是 "No"。 “1/2/12”的简单示例证明了这一点,因为它可能是 1 月 2 日、2 月 1 日或其他日期。您可以做出猜测和假设,但永远不能确定。在许多重复的问题中讨论了很多。

当然,您必须知道您的传入数据。

ISO 8601

如果您需要一个建议的模式来格式化您自己的日期时间值的文本表示,那么标准的 ISO 8601 格式是可行的。阅读 Wikipedia page.

YYYY-MM-DDTHH:MM:SS.SSSZ

在重复的问题中讨论了很多次。

java.time 框架通过附加适当的时间名称扩展了该字符串格式。聪明实用,但还不标准。

UTC

处理日期时间的最佳做法是在后端使用 UTC 时区。

仅在用户界面中调整为时区或在预期时导出。

在许多重复的问题中进行了讨论。

避免java.util.Date

避免 java.util.Date 和 .Calendar 类 与 Java 捆绑在一起。它们出了名的麻烦,在设计和实施方面存在缺陷。

而是使用 Java 8 中的 Joda-Time library or the new java.time package(受 Joda-Time 启发)。这两者都使用 ISO 8601 作为日期时间值的 parsing/generating 字符串表示形式的默认值。

Joda-Time 2.7 中的示例…

DateTime dateTime = new DateTime( "2015-01-02T12:34:56.789-02:00", DateTimeZone.forID( "America/Montreal" ) ) ;

在许多重复的问题中进行了讨论。

避免从纪元开始计数

跟踪毫秒数的建议是错误的。

这样的纪元计数对人类没有意义reader 使调试变得复杂和错误的数据不可见。

其中epoch? A couple dozen已在各种软件系统中使用

计数的大小粒度是多少?各种软件系统使用整秒、毫秒、微秒、纳秒或其他单位。

同样,在许多重复的问题中进行了讨论。