获取特定时区中的当前 Instant
Getting the current Instant in a specific TimeZone
我试图获取特定时区的当前实例,但它没有按预期工作。关于如何执行此操作的任何想法?
这是我所做的:
Instant.now(Clock.system(ZoneId.of("America/Los_Angeles"))).truncatedTo(ChronoUnit.SECONDS)
但是返回的即时时间始终是 UTC。我多次更改 ZoneID,但它总是错误的。请指教
编辑:
我正在与使用时间戳生成日志的应用程序进行交互,我需要对这些事件进行操作。如果我用特定的时间戳启动我的程序,它应该立即开始从该时间戳读取事件。虽然我的笔记本电脑与生成这些事件的应用程序处于同一时区,但当我得到 Instant.Now() 时,我似乎处于 UTC。而应用程序根据我们所在的时区生成时间戳。我希望我的程序的时钟与服务器中的时钟相同。
应用程序生成 2016-08-04T18:17:51Z 格式的时间戳
Instant
不支持时区。如果您需要时区感知时间戳,您应该使用 ZonedDateTime
.
查看 ZonedDateTime.now(timezone)
which will use the provided timezone. To use the machine's default timezone, use ZonedDateTime.now()
如果要解析 ZonedDateTime 并覆盖时区,可以根据需要使用 ZonedDateTime.withZoneSameLocal
or ZonedDateTime.withZoneSameInstant
。
我试图获取特定时区的当前实例,但它没有按预期工作。关于如何执行此操作的任何想法?
这是我所做的:
Instant.now(Clock.system(ZoneId.of("America/Los_Angeles"))).truncatedTo(ChronoUnit.SECONDS)
但是返回的即时时间始终是 UTC。我多次更改 ZoneID,但它总是错误的。请指教
编辑:
我正在与使用时间戳生成日志的应用程序进行交互,我需要对这些事件进行操作。如果我用特定的时间戳启动我的程序,它应该立即开始从该时间戳读取事件。虽然我的笔记本电脑与生成这些事件的应用程序处于同一时区,但当我得到 Instant.Now() 时,我似乎处于 UTC。而应用程序根据我们所在的时区生成时间戳。我希望我的程序的时钟与服务器中的时钟相同。
应用程序生成 2016-08-04T18:17:51Z 格式的时间戳
Instant
不支持时区。如果您需要时区感知时间戳,您应该使用 ZonedDateTime
.
查看 ZonedDateTime.now(timezone)
which will use the provided timezone. To use the machine's default timezone, use ZonedDateTime.now()
如果要解析 ZonedDateTime 并覆盖时区,可以根据需要使用 ZonedDateTime.withZoneSameLocal
or ZonedDateTime.withZoneSameInstant
。