为什么日期操作在javascript中很奇怪

时间:2015-03-20 09:03:26

标签: javascript jquery date

我是Java Script的新手,我正在开发一个网页,网页将具有交互式内容,具体取决于通过datepicker选择的日期。

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

所以,我认为语言环境和时区正在形成。

有没有办法在不考虑区域设置和时区的情况下获得与日期选择器中输入的日期相同的日期?

2 个答案:

答案 0 :(得分:3)

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

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

var dateString = dt.toISOString();

...会给你这样的"2015-03-20T09:07:07.193Z"

然后确保您的服务器正确地将日期解释为UTC日期(结尾将始终显示Z时区指示符,表示UTC。)

或者,您可以使用getTime来获取自1970年1月1日格林威治标准时间午夜(UTC)(又称“大纪元”)以来的毫秒数:

var epochMilliseconds = dt.getTime();

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

答案 1 :(得分:0)

Javascript的Date类并不代表日期,它代表一个时间戳(在Java中也是如此)。使它成为日期

new Date() 

应该可以正常工作,但是如果你在yyyy-mm-dd使用日期格式,那么将它改为yyyy / mm / dd它应该可以正常工作。