[英]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.