如何从周一 九月 02 17:00:00 PDT 2019 转换为 09022019 在 groovy?



我正在从UI到进程获取日期格式"星期一9月2日星期一17:00:00 PDT 2019"。但我想像09022019一样转换。下面的代码我尝试过,但转换为一天前。

sampleDate = Mon Sep 02 17:00:00 PDT 2019 
sdf = new SimpleDateFormat("MMddyyyy")
sdf.format(sampleDate)

我正在09012019但预计日期09022019。

请帮忙。

假设您使用的是 Java 8+ 和 Groovy 2.5+,您可以使用 Java 8 日期/时间 API:

import java.time.*
new Date("Mon Sep 02 17:00:00 PDT 2019").toZonedDateTime().format('MMddyyy')

您需要为SimpleDateFormat添加setTimeZone

默认情况下,SimpleDateFormat 使用系统的默认时区(如果未指定(。只需将代码的第二行更改为sdf = new SimpleDateFormat("MMddyyyy z")即可检查它。也许这就是你09012019的原因。

还有一件事。TimeZone.getTimeZone("PDT")不返回 PDT 的时区对象。我猜是因为 PDT 不是时区,而是伪时区。然后我们将使用类似的东西TimeZone.getTimeZone("America/Los_Angeles").

sdf = new SimpleDateFormat("MMddyyyy")
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"))
sdf.format(sampleDate)

无论系统时区如何,都将返回09022019。

最新更新