【问题标题】:Convert ISO8601 date time format to another ISO8601 date time format将 ISO8601 日期时间格式转换为另一种 ISO8601 日期时间格式
【发布时间】:2019-01-30 14:10:06
【问题描述】:

我遇到了一个问题。我需要将 ISO8601 日期时间格式的日期转换为另一种 ISO8601 日期格式。例如,我需要根据语言环境将 2019-01-08T09:51:34+0000 转换为另一种类似的日期时间格式。我试过了这样做:

OffsetDateTime offsetDateTime = OffsetDateTime.parse(date);
Instant instant = offsetDateTime.toInstant(); 

但是从这里我可以转换为日期对象,但问题是如何根据我收到的语言环境转换为另一种 ISO8601 日期时间格式。您可以假设我有存储在 db 中的格式,我可以使用上面提到的语言环境进行检索,并且该部分没有问题。

在过去的 3 周里,我一直在努力解决这个问题。请指出我缺少什么或我需要改变的方法。

【问题讨论】:

  • “基于我收到的语言环境”是什么意思? ISO-8601 不是特定于语言环境的 - 它旨在机器可读性而不是人类。您希望使用语言环境做什么?
  • 你的意思是时区而不是语言环境?
  • 期望结果的示例是什么样的?
  • 只有一种 ISO-8601 格式,您可能想用预期的输出来说明您的问题。

标签: java date iso8601


【解决方案1】:

与 ISO 8601 无关的语言环境

Locale 用于本地化,同时生成描述日期时间值的文本。

ISO 8601 是一种标准,用于定义表示未本地化的日期时间值的文本格式。避免本地化是 ISO 8601 的重点,它提供了一种供全球使用的单一格式。这提供了简单可靠的数据交换。

例如,日期在 ISO 8601 中以 YYYY-MM-DD 格式表示,无处不在。 1 月 23 日是2019-01-23,无论您是在魁北克蒙特利尔、德国柏林、印度浦那还是日本东京。

因此,您对 ISO 8601 的 Locale 提出的问题毫无意义。

根据我收到的语言环境转换为另一种 ISO8601 日期时间格式

您的措辞是自相矛盾的。 ISO 8601 字符串中没有使用Locale。

我建议您花点时间研究一下ISO 8601 的维基百科页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 2022-09-28
    • 1970-01-01
    相关资源
    最近更新 更多