在我的Web应用程序中,允许用户选择“ 8:15 pm”之类的时间和“ Wednesday”之类的日期。将其发送到服务器后,我将使用Javascript方法发送字符串“ 8:15 pm”,“星期三”和时区信息

new Date().getTimezoneOffset()


这将以分钟为单位返回距UTC的偏移量。如何将类似360(6小时)的时间转换为ZoneOffset,以便可以计算适当的OffsetDateTime?是否有实用程序方法将小时和基本ZoneOffset转换为新的ZoneOffset?

最佳答案

只是需要考虑一下,您可以将当前时间(以毫秒或毫微秒为单位)发送到服务器,这将是64位或8字节,而不是发送可变长度的String,并附带使用另一个字节的区域警戒时间,或者几个你真的想要

另外,正如另一个用户所述,您可以使用ZoneOffset#ofHours和其他有用的工厂方法来创建ZoneOffset。

ZoneOffset offset = ZoneOffset.ofHours(6);


如何转换为ZonedDateTime的示例

int offsetHours = 6; // receive from client

long millis = System.currentTimeMillis(); // received from client

ZoneOffset offset = ZoneOffset.ofHours(offsetHours);

ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.ofEpochMilli(millis), offset);

08-07 02:33