传递时间戳时javascript的Date()方法会在结果中添加一天

时间:2012-10-03 13:30:46

标签: javascript date datetime-format

我正试图从我的时间戳中得到一个日期(就像格式:2012-08-31T18:30:00,来自日期选择器)

   var value = "2012-08-31T18:30:00";

   var date = new Date(value);

此(日期)的结果是:Sat Sep 01 2012 00:00:00 GMT+0530 (India Standard Time)

此处Date()功能是在给定日期添加一天。我已经尝试了不同的输入,但我总是在一天内添加结果。我试过谷歌搜索和搜索堆栈溢出,但无法得到一个有效的答案。任何人都可以告诉我为什么会发生这种情况以及如何解决这个问题?

谢谢, Riswan

4 个答案:

答案 0 :(得分:1)

这是你的当地时区甩掉了价值。您可以找到有关UTC here的更多信息。

  

toUTCString返回的值是UTC时区中美式英语中的可读字符串。返回值的格式可能有所不同   根据平台。最常见的返回值是RFC-1123   格式化日期戳,这是RFC-822的略微更新版本   日期戳。

var value = "2012-08-31T18:30:00";
var date = new Date(value);
date = date.toUTCString()

<强> EXAMPLE

修改

我可以从您发布的评论中收集到的内容,您可能正在寻找更像 THIS EXAMPLE 的内容:

var value = "2012-08-31T18:30:00"; //string value
var dateTime = value.split("T"); //split on T

var date = dateTime[0]; 
date = new Date(date); //set the date

var time = dateTime[1];
time = time.split(":"); //get the time into an array

//use set hours to set the time to 18:30:00:00 (hh:mm:ss:mm)
date.setHours(time[0], time[1], time[2], 0)

console.log(date);

答案 1 :(得分:0)

“2012-08-31T18:30:00”是指格林威治标准时间(GMT)/ UTC。

"2012-08-31T18:30:00" + India (UTC+5:30) = Sat Sep 01 2012 00:00:00 GMT+0530 (India Standard Time)

答案 2 :(得分:0)

因为时间戳的值是GMT,Date()返回本地时间戳。

使用date.toGMTString()将其保留为GMT格式。

答案 3 :(得分:0)

Sat Sep 01 2012 00:00:00 GMT+0530位于GMT + 5h30

实际上2012-08-31T18:30:00加上 5h30