首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用时区将JavaScript日期转换为Java时间?

如何使用时区将JavaScript日期转换为Java时间?
EN

Stack Overflow用户
提问于 2016-03-31 08:04:39
回答 4查看 14.7K关注 0票数 1

是否有一种简单的方法可以将JavaScript日期转换为带有时区的Java8日期时间?

我有一个web应用程序,它由两个部分组成,前端用JavaScript编写,后端用Java编写。用户应该能够在UI中选择一个日期时间,并且这个值应该由后端使用。将此值转换为Java日期时间的最简单方法是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-03-31 08:04:57

您可以使用通用协调时间(UTC)和ZonedDateTime转换时间,例如:

代码语言:javascript
复制
Thu, 31 Mar 2016 06:49:02 GMT
Thu, 31 Mar 2016 06:49:02 -0830

JavaScript

代码语言:javascript
复制
var d = new Date();
var n = d.toUTCString();

toUTCString()方法根据通用时间将日期对象转换为字符串。例如,console.log(n);将输出一个结果:

代码语言:javascript
复制
Tue, 17 Mar 2020 08:59:19 GMT

Java 8

代码语言:javascript
复制
ZonedDateTime zdt = ZonedDateTime.parse(text, DateTimeFormatter.RFC_1123_DATE_TIME);

文本是UTC日期和时间字符串。

ZonedDateTime是ISO-8601日历系统中具有时区的日期时间。

时间是一个预定义的RFC-1123日期时间格式化程序.

为上面的示例值打印zdt将产生:

代码语言:javascript
复制
2020-03-17T08:59:19Z
票数 0
EN

Stack Overflow用户

发布于 2016-08-15 20:16:20

使用ZoneId.of(字符串zoneID)

代码语言:javascript
复制
ZoneId.of("UTC");  
ZoneId.of("-08:00");
票数 0
EN

Stack Overflow用户

发布于 2017-12-22 17:27:30

最近,我不得不在一个具有Java服务器后端和Javascript运行浏览器的web应用程序中这样做。问题是构建要发送到服务器的请求的Javascript代码与我的代码关闭,因此我无法调用Javascript Date对象实例上的任何特定方法来控制格式设置。因此,toString()方法被隐式调用,其结果字符串如下所示:

Mon Sep 28 1998 14:36:22 GMT-0700 (PDT)

使用Chrome、Firefox或Safari时

深入研究规格说明可以发现,此方法调用toDateString(tv),其中tv是日期实例的时间值。

不幸的是,似乎要由实现风格来决定这到底是如何显示的:

返回一个依赖于实现的字符串值,该值将tv表示为当前时区中的日期和时间,使用方便的、可读的形式。

因此,我们不能确定所有浏览器在调用.toString()时都会以相同的方式格式化日期,但我在用几个浏览器进行测试并将区域设置、语言和日历更改为各种有趣的设置(例如埃塞俄比亚)时,偶然地观察到了相同的格式,但我的结果仍然是相同的日期格式。

假设它是一致的,我们现在可以使用以下方法解析Java中的日期:

ZonedDateTime zdt = DateTimeFormatter.ofPattern("EEE MMM d yyyy HH:mm:ss 'GMT'Z (z)")

它保存客户端发送的时区信息。

无论如何,我希望这对其他人是有用的,如果有人能指出任何关于Javascript日期toString()方法的一致性的文档,我将不胜感激。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36327539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档