我正在尝试从我拥有的时间戳中获取日期(类似于格式: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:00
加 5h30