繁体   English   中英

Groovy:尝试解析日期

[英]Groovy : Attempting to parse a date

我试图使用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

您需要考虑在解析日期中支持时区偏移。 检查在当前时区设置为Europe / Warsaw的以下脚本运行:

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

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

希望对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM