Java 8时间-将Javascript的日期().getTimezoneOffset转换为ZoneOffset

Java 8时间-将Javascript的日期().getTimezoneOffset转换为ZoneOffset,java,java-8,java-time,Java,Java 8,Java Time,在我的web应用程序中,允许用户选择晚上8:15和星期三这样的时间。当发送到服务器时,我使用Javascript方法发送字符串8:15pm,星期三和时区信息 new Date().getTimezoneOffset() 这将以分钟为单位返回与UTC的偏移量。如何将360 6小时之类的时间转换为区域偏移量,以便计算正确的OffsetDateTime?是否有一种实用方法可以将小时数和基本区域偏移量转换为新的区域偏移量?值得思考的是,您可以将当前时间(以毫秒或纳米为单位)发送到服务器,该时间为64位

在我的web应用程序中,允许用户选择晚上8:15和星期三这样的时间。当发送到服务器时,我使用Javascript方法发送字符串8:15pm,星期三和时区信息

new Date().getTimezoneOffset()

这将以分钟为单位返回与UTC的偏移量。如何将360 6小时之类的时间转换为区域偏移量,以便计算正确的OffsetDateTime?是否有一种实用方法可以将小时数和基本区域偏移量转换为新的区域偏移量?

值得思考的是,您可以将当前时间(以毫秒或纳米为单位)发送到服务器,该时间为64位或8字节,而不是发送一个可变长度的字符串,同时使用另一个字节发送一个区域的小时数,如果你真的想的话,也可以吃点

另外,正如另一位用户所提到的,您可以使用ZoneOffsetofHours和其他有用的factory方法创建ZoneOffset

区域偏移量=小时6的区域偏移量; 如何转换为ZoneDateTime的示例

int offsetHours=6;//从客户处收到 长毫秒=System.currentTimeMillis;//从客户处收到 ZoneOffset offset=小时方法的ZoneOffset; ZonedDateTime ZonedDateTime=ZonedDateTime.ofInstantint.ofEpochMillimillis,偏移量;
java.util.Date类方法

getTimezoneOffset

和javascript日期类方法

getTimezoneOffset

产生相同的输出,它给出从给定时间到GMT/UTC时间的偏移值(以分钟为单位)

例如

UTC+5:30

我们从UTC/GMT得到5*60+30=330分钟,偏移值为-330

int timeZoneOffset = new Date().getTimezoneOffset(); // for IST(UTC +5:30), we get -330

ZoneOffset.ofTotalSeconds(-1*timeZoneOffset*60) // provides correct the ZoneOffset +05:30

你是说像?区域偏移量呢。总秒360*60?是的,@SeanBright,这就是我要找的。不知道我怎么会错过它。你想把它写下来作为一个答案。@Michael,这也是一个Javascript方法。很公平,谢谢你的编辑。值得注意的是,@Michael correct,有些在半小时内。我最终使用了ZoneOffset ZoneOffset=ZoneOffset.of TotalSecondStimeZoneOffset*60;作为我的解决方案,timzoneOffset是Javascript调用的分钟数,非常好!干得好