我有像"2014-06-12T23:00:00"这样的字符串,我想把这些字符串变成时间对象,以便能够添加小时。
我尝试了几个转换和解析,但没有工作。把它们变成时间对象的正确方法是什么?
您的字符串具有有效的格式,因此您可以通过简单地键入
将其转换为Date对象:var date = new Date("2014-06-12T23:00:00");
但是,该字符串将被解释为UTC字符串。当您在客户机中使用它时,将使用该值的本地表示形式。如果您在运行中欧时间的计算机上运行该代码,其中时区是UTC+1h,并且6月12日在夏令时期间,例如,添加额外的小时,date.getDate()
将正确地产生13
(而不是12),因为UTC时间6月12日晚上11点实际上是当地时间6月13日凌晨1点。
如果你不希望你提供的字符串被解释为UTC时间,你可以指定一个时区:
var date = new Date("2014-06-12T23:00:00 GMT+0200");
如果您希望日期始终被视为本地时间,您可以手动调整偏移量:
var date = new Date("2014-06-12T23:00:00");
date.setMinutes(date.getMinutes() + date.getTimezoneOffset());
在date对象中添加小时:
var k = "2014-06-12T23:00:00";
var t = new Date( k.replace('T', ' ') ).getTime();
var n = t + 5 * 60 * 60 * 1000; //add 5 hours;
console.log( k, new Date( t ), new Date( n ) );
JS FIDDLE DEMO
您对某个时区感兴趣吗?