我是 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/