我正在从用户界面获取日期格式为“ Mon Sep 02 17:00:00 PDT 2019”的日期格式。但是我想转换为09022019。我尝试了以下代码,但是转换为一天之前。
sampleDate = Mon Sep 02 17:00:00 PDT 2019
sdf = new SimpleDateFormat("MMddyyyy")
sdf.format(sampleDate)
我将收到09012019,但预计日期是09022019。
请帮助。
答案 0 :(得分:2)
假设您使用的是Java 8+和Groovy 2.5+,则可以使用Java 8 Date / Time API:
import java.time.*
new Date("Mon Sep 02 17:00:00 PDT 2019").toZonedDateTime().format('MMddyyy')
答案 1 :(得分:1)
您需要为setTimeZone
添加SimpleDateFormat
。
默认情况下,如果未指定,则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。