我正在从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。