如何从 Mon Sep 02 17:00:00 PDT 2019 转换为 groovy 中的 09022019?
How to convert from Mon Sep 02 17:00:00 PDT 2019 to 09022019 in groovy?
我正在从 UI 获取日期格式 "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。
请帮忙。
您需要为 SimpleDateFormat
添加 setTimeZone
。
默认情况下,如果指定 none,SimpleDateFormat 使用系统的默认时区。只需将代码的第二行更改为 sdf = new SimpleDateFormat("MMddyyyy z")
即可对其进行检查。也许这就是为什么你得到 09012019.
还有一件事。 TimeZone.getTimeZone("PDT")
不要 return PDT 的时区对象。我猜是因为 PDT 不是时区而是伪时区。然后我们将使用类似 TimeZone.getTimeZone("America/Los_Angeles")
.
的东西
sdf = new SimpleDateFormat("MMddyyyy")
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"))
sdf.format(sampleDate)
将 return 09022019 无论系统时区如何。
假设您使用的是 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')
我正在从 UI 获取日期格式 "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。
请帮忙。
您需要为 SimpleDateFormat
添加 setTimeZone
。
默认情况下,如果指定 none,SimpleDateFormat 使用系统的默认时区。只需将代码的第二行更改为 sdf = new SimpleDateFormat("MMddyyyy z")
即可对其进行检查。也许这就是为什么你得到 09012019.
还有一件事。 TimeZone.getTimeZone("PDT")
不要 return PDT 的时区对象。我猜是因为 PDT 不是时区而是伪时区。然后我们将使用类似 TimeZone.getTimeZone("America/Los_Angeles")
.
sdf = new SimpleDateFormat("MMddyyyy")
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"))
sdf.format(sampleDate)
将 return 09022019 无论系统时区如何。
假设您使用的是 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')