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

时间:2015-05-08 15:39:39

标签: java javascript date datetime datetime-format

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

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

1 个答案:

答案 0 :(得分:3)

你的问题不清楚。

没有神奇的解析模式

如果您要求一个神奇的解析模式,可以处理日期时间值的任何可能的传入文本表示,答案是"否"。 " 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捆绑在一起的java.util.Date和.Calendar类。众所周知,它们在设计和实施方面存在问题。

而是在Java 8中使用Joda-Time库或新的java.time package(受Joda-Time启发)。这两个都使用ISO 8601作为解析/生成日期时间值的字符串表示的默认值。

Joda-Time 2.7中的示例......

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

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

避免从纪元开始计数

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

对于人类读者来说,这样一个从历史算起来没有任何意义,使得调试复杂且错误的数据不可见。

哪个epochcouple dozen已在各种软件系统中使用。

哪个粒度粒度?各种软件系统使用整秒,毫秒,微秒,纳秒或其他。

enter image description here

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