如何在Groovy脚本中格式化日期

时间:2019-09-26 15:50:27

标签: groovy

嗨,我有一个从我的Jira Sprint Environment中获取的日期格式2019-03-29T06:56:00.000-04:00

我正在使用groovy脚本。

我尝试使用多种格式来制作类似上述的格式。 但是无法做到。 这是我尝试过的以下解决方案。

1-

`def sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
sdf.setTimeZone(TimeZone.getTimeZone("GMT"))
log.debug("Printing Current time stamp date : "+sdf)

解决方案1仅打印文本。

2-

def now = new Date()
println now.format("yyyy-MM-dd'T'HH:mm:ss'Z'",TimeZone.getTimeZone('UTC'))

这个正在打印

Printing Current time stamp date : Thu Sep 26 08:00:35 EDT 2019"

有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

考虑到下面有Java 8或更高版本,您所需要做的只是

OffsetDateTime.now(ZoneId.systemDefault()).toString()

在我所在的时区(欧洲/哥本哈根)

  

2019-09-27T21:46:53.336204 + 02:00

如果您的默认时区为美国/蒙特利尔美国/纽约州,则您的夏时制时间为-04:00,与夏令时一样长({{ 3}})生效,然后-05:00。

您可以轻松解析。

OffsetDateTime.parse( "2019-09-27T21:46:53.336204+02:00" ) 

请参阅此Daylight Saving Time

答案 1 :(得分:0)

所以,目标是将日期格式为

2019-03-29T06:56:00.000-04:00

以下代码使用时区GMT-4进行格式化

def now=new Date().format("yyyy-MM-dd'T'HH:mm:ss.SSSXXX",TimeZone.getTimeZone('GMT-4'))
println now

打印

2019-09-26T16:33:18.462-04:00

请注意,变量now将包含带有格式日期的String

检查所有可用的日期和时间模式:

https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html

答案 2 :(得分:0)

def currentDate = new Date()
def date = currentDate.format('yyyy-MM-dd')
def time = currentDate.format('HH:mm:ss.SSS')
def dateTime = date.toString() + 'T' + time.toString() + 'Z'