javascript - 为什么 JavaScript 中的日期操作很奇怪

标签 javascript jquery date

我是 Java 脚本新手,正在开发一个网页,该网页将根据通过日期选择器选择的日期具有交互式内容。

我正在使用var date = new Date(),当我在印度使用我的机器时,日期创建工作正常。但是,当我通过印度计算机在美国时区虚拟机中使用相同的新 Date() 时,返回的日期比日期选择器中输入的日期早一天。

所以,我想区域设置和时区正在出现。

有什么方法可以让我获得与日期选择器中输入的日期相同的日期,而不考虑区域设置和时区?

最佳答案

JavaScript Date 对象在 JavaScript 引擎(浏览器,如果您使用的是浏览器)的本地时区中工作。

如果您要将该信息发送到位于不同时区的服务器,最好的做法通常是将其作为 ISO 字符串发送:

var dateString = dt.toISOString();

...这将为您提供类似 "2015-03-20T09:07:07.193Z" 的内容。

然后确保您的服务器将日期正确解释为 UTC 日期(它的末尾始终会带有 Z 时区指示符,表示 UTC)。

或者,您可以使用 getTime 获取自 1970 年 1 月 1 日午夜 GMT (UTC)(又名“The Epoch”)以来的毫秒数:

var epochMilliseconds = dt.getTime();

...并将该服务器端与服务器支持的任何 Date 类型一起使用;它们都有一种将自纪元以来的毫秒数或自纪元以来的秒数转换为日期/时间的方法。 (如果您担心 1970 年之前的日期,不用担心;我们只使用负数。)

关于javascript - 为什么 JavaScript 中的日期操作很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29162847/

相关文章:

javascript - 如何淡出然后直接到新页面

json - 如何使用 JsonFormat 反序列化 Jackson Json NULL 字符串

javascript - 在 jQuery 中将 HTML 附加到 HTML 字符串

javascript - 使用 Date::toLocaleDateString() 格式化日期中的自定义分隔符

javascript - 如何正确堆叠砌体布局和延迟加载图像?

sql-server - 转换例如。 2012-05-25 自 1970 年 1 月 1 日以来的秒数

javascript - 在工作时间显示/隐藏 div,与 UTC 混合?

javascript - 如何在滚动上只制作 1 次动画

javascript - Jquery UI Slider 不正确的最大值

php - Laravel 5 和 AJAX 响应