【问题标题】:Is there any generic date format available? [closed]有没有可用的通用日期格式? [关闭]
【发布时间】:2015-05-08 15:39:38
【问题描述】:

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

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

【问题讨论】:

  • ISO 8601是这样的标准吗?
  • 不,这不是通用格式。日期可以用多种方式表示。有一个标准格式,但并非所有 日期 都应遵循它。
  • @Prashant2329 我已经编辑了您的问题并删除了不必要的单词大写。
  • @LuiggiMendoza 基于本地时区,我可以设置日期格式吗?有可能吗?
  • ISO 8601 是您正在寻找的。它标准化了日期的表示方式,为每个组件提供了可预测的位置。

标签: java javascript date datetime datetime-format


【解决方案1】:

您的问题不清楚。

没有神奇的解析模式

如果您要求一种神奇的解析模式,它可以处理任何可能传入的日期时间值的文本表示,答案是“否”。 “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 类。它们是出了名的麻烦,在设计和实施方面存在缺陷。

改用 Joda-Time 库或 Java 8 中的新 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" ) ) ;

在许多重复的问题中讨论过。

避免 Count-From-Epoch

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

对于人类读者来说,这样的从纪元开始计数没有任何意义,使得调试复杂和错误的数据不可见。

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

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

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

【讨论】:

    猜你喜欢
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    相关资源
    最近更新 更多