我遇到了一个问题。我需要将ISO8601日期时间格式的日期转换为另一种ISO8601日期格式。例如,我需要根据语言环境将2019-01-08T09:51:34+0000
转换为另一种相似的日期时间格式。我尝试这样做:
OffsetDateTime offsetDateTime = OffsetDateTime.parse(date);
Instant instant = offsetDateTime.toInstant();
但是从这里我可以转换为日期对象,但是问题是如何根据收到的语言环境转换为另一种ISO8601日期时间格式。您可以假定我已将格式存储在db中,可以使用上述语言环境检索该格式,而在该部分中没有问题。
过去3周,我一直在为此事苦苦挣扎。请指出我所缺少的方法或需要改变的方法。
答案 0 :(得分:4)
Locale
用于本地化,同时生成描述日期时间值的文本。
ISO 8601是用于定义表示 not 本地化的日期时间值的文本格式的标准定义。避免本地化是ISO 8601的重点,它提供了一种在全球范围内使用的单一格式。这样可以轻松可靠地交换数据。
例如,日期在任何地方都以ISO 8601中的YYYY-MM-DD格式表示。 1月23日总是2019-01-23
,无论您是在魁北克蒙特利尔,德国柏林,印度浦那还是日本东京。
因此,您提出的关于使用ISO 8601的Locale
的问题毫无道理。
根据我收到的语言环境转换为另一种ISO8601日期时间格式
您的用语在术语上是矛盾的。 ISO 8601字符串中没有使用Locale
。
我建议您花些时间研究ISO 8601的Wikipedia页面。