JavaScript的Date()方法,同时传递时间戳会向结果添加一天



我正在尝试从我拥有的时间戳中获取日期(类似于格式: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()函数是在给定日期中添加一天。我已经尝试过不同的输入,但总是在添加一天后得到结果。我尝试谷歌搜索并搜索堆栈溢出,但无法得到有效的答案。谁能告诉我为什么会发生这种情况以及如何解决这个问题?

谢谢里斯旺

是你的本地时区抛弃了这个值。您可以在此处找到有关UTC的更多信息。

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

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

编辑

我可以从您发布的评论中收集到什么,您可能正在寻找更像这个例子的东西:

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);
"

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)

因为时间戳的值在 GMT 中,并且Date()返回本地时间戳。

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

Sat Sep 01 2012 00:00:00 GMT+0530在 GMT + 5h30

它实际上是2012-08-31T18:30:005h30

最新更新