我有一个如下格式的字符串:2021-10- 22 T21:43:00-05:00我知道它在UTC的时区-5:00。现在我想得到UTC格式的字符串dd:MMM:yyyy,这样我就可以将它与其他服务的响应进行比较。你能帮我处理代码吗?到目前为止,我无法解析它,因为我不熟悉日期的格式。尤其是时区部分。我尝试了
def date = '2021-10-22T21:43:00-05:00'
def timezone = TimeZone.getTimeZone("UTC");
def dateFormat = 'dd:MMM:yyyy'
Date.parse('yyyy-MM-dd',date.take(10)).format(dateFormat,timezone)
这样做的问题是我丢失了日期的时区部分,所以我不能更改它。我在ReadyApi软件中使用Groovy。我不是最先进的编码器,所以请帮助。感谢您的回答。:)
1条答案
按热度按时间nhaq1z211#
tl;dr
详细信息
我有一个如下格式的字符串:2021-10- 22 T21:43:00-05:00我知道这是UTC的-5:00时区。
不,那不是时区,那是offset from UTC,UTC本初子午线前后的时-分-秒数。
时区的意义远不止于此。时区是特定地区的政治家决定的人们所使用的偏移量的过去、现在和未来变化的命名历史。时区的名称格式为
Continent/Region
,例如Europe/Paris
。请参阅list。将输入解析为
OffsetDateTime
。这里是一些Java语法代码,因为我还没有学习Groovy。您的输入字符串符合 java.time 类中默认使用的ISO 8601标准格式,因此无需定义格式模式。
显然,您希望使用该值的日期部分来生成
dd:MMM:yyyy
的文本。我必须说,这是一种相当时髦的格式,你可能想让数据的发布者了解只使用ISO 8601的好处。
定义格式模式。指定用于本地化中间月份缩写名称的区域设置。
产生文字。
但是如果您的目标是比较,我建议您 parse 另一个字符串,而不是 generate 用于比较的文本。
从我们的
OffsetDateTime
对象odt
中提取日期部分。比较一下。