gpt4 book ai didi

java - 常规 : Attempting to parse a date

转载 作者:行者123 更新时间:2023-11-30 02:25:46 29 4
gpt4 key购买 nike

我正在尝试使用 groovy 解析日期字符串,但遇到了问题。这是字符串的样子和不起作用的逻辑。

def dateString = "2017-01-01T12:00:00Z"
def date = Date.parse("yyyy-MM-dd HH:mm:ss", dateString)

我也尝试过

def date = Date.parse("yyyy-MM-dd'T'HH:mm:ssZ", dateString)

它也不解析。任何帮助将不胜感激。

预先感谢您的帮助。

最佳答案

尝试以下格式:yyyy-MM-dd'T'HH:mm:ssX

运行脚本:

def dateString = "2017-01-01T12:00:00Z"
def date = Date.parse("yyyy-MM-dd'T'HH:mm:ssX", dateString)
println date

产生以下输出:

Sun Jan 01 13:00:00 CET 2017

比较 yyyy-MM-dd'T'HH:mm:ss'Z'yyyy-MM-dd'T'HH:mm:ssX

您需要考虑在正在解析的日期中支持时区偏移。检查以下脚本在当前时区设置为欧洲/华沙的情况下运行:

println Date.parse("yyyy-MM-dd'T'HH:mm:ss'Z'", dateString)
println Date.parse("yyyy-MM-dd'T'HH:mm:ssX", dateString)

它会产生两个不同的结果:

Sun Jan 01 12:00:00 CET 2017
Sun Jan 01 13:00:00 CET 2017

第一个款待 Z作为文字并使用当前时区解析给定的日期和时间。这意味着当您使用不同的当前时区集运行此脚本时,您将再次得到 12:00:00在这个时区。

第二个考虑时区信息并处理 Z不是作为字面意思,而是作为 GMT/UTC时区符号。因此,如果我的时区正确时间是 13:00:00而不是12:00:00 .

第一种格式还存在另一个问题。如果您开始收到类似 2017-01-01T12:00:00+0400 的日期使用第一个模式时,您将收到以下异常:

Caught: java.text.ParseException: Unparseable date: "2017-01-01T12:00:00+0400"
java.text.ParseException: Unparseable date: "2017-01-01T12:00:00+0400"
at avg.run(avg.groovy:35)

第二个解析给出 dateString具有明确的时区偏移,没有问题并打印:

Sun Jan 01 09:00:00 CET 2017

这是我当前时区的正确日期和时间。

希望对您有所帮助。

关于java - 常规 : Attempting to parse a date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45710173/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com