我有2个日期对象。我想从一个时间和另一个时间中取出日期,并将它们组合成一个新的日期对象。
date.toString() = Wed Dec 21 2011 00:00:00 GMT+0000 (GMT)
time.toString() = Sun Dec 31 2000 03:00:00 GMT+0000 (GMT)
# I want to end up with
datetime.toString() = Wed Dec 21 2011 03:00:00 GMT+0000 (GMT)
我怎样才能最好地完成这项工作?
答案 0 :(得分:38)
var datetime = new Date(date.getFullYear(), date.getMonth(), date.getDate(),
time.getHours(), time.getMinutes(), time.getSeconds());
答案 1 :(得分:5)
这样的事情怎么样:
var year = date.getFullYear(),
month = date.getMonth(),
day = date.getDate();
time.setFullYear(year);
time.setMonth(month);
time.setDate(day);
答案 2 :(得分:3)
var parts = ['Hours', 'Minutes', 'Seconds', 'Milliseconds'];
for (var i=0, p; p=parts[i], i<parts.length; i++) {
date['setUTC'+p]( time['getUTC'+p]() );
}
答案 3 :(得分:2)
您可以使用字符串函数来构建目标字符串...
datetime = date.toString().substr(0,16) + time.toString().substr(16,40)
然后,如果您需要将其作为日期对象,请将其输入new date()
答案 4 :(得分:1)
var msPerDay = 1000 * 60 * 60 * 24;
var newDateTime = new Date(date.getTime() + (time.getTime() % msPerDay));
编辑:我假设日期变量是没有任何时间的日期。
答案 5 :(得分:1)
我不知道这是否是最好的,但您可以尝试以下方法:
datetime = new Date(
date.getUTCFullYear(),
date.getUTCMonth(),
date.getUTCDate(),
time.getUTCHours(),
time.getUTCMinutes(),
time.getUTCSeconds()
);
有关Date
对象外观here的进一步参考。
答案 6 :(得分:1)
这是一个使用regexp替换日期时间然后创建新Date对象的方法。
dateTime = new Date(date.toString().replace(/(\d\d:){2}\d{2}/,/(\d\d:){2}\d{2}/.exec(time.toString())[0]));