Подтвердить что ты не робот

Как объединить две даты в JavaScript?

У меня есть 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)

Как я могу это сделать?

4b9b3361

Ответ 1

var datetime = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 
                        time.getHours(), time.getMinutes(), time.getSeconds());

Ответ 2

Как насчет чего-то вроде этого:

var year  = date.getFullYear(),
    month = date.getMonth(),
    day   = date.getDate();

time.setFullYear(year);
time.setMonth(month);
time.setDate(day);

Ответ 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]() );
}

Ответ 4

вы можете использовать строковые функции для построения целевой строки...

datetime = date.toString().substr(0,16) + time.toString().substr(16,40)

то, если вам нужно иметь его как объект даты, подайте его в new date()

Ответ 5

var msPerDay = 1000 * 60 * 60 * 24;
var newDateTime = new Date(date.getTime() + (time.getTime() % msPerDay));

EDIT: my предполагает, что переменная date - это дата без какого-либо времени.

Ответ 6

Я не знаю, является ли это лучшим, но вы можете попробовать следующее:

datetime = new Date(
  date.getUTCFullYear(),
  date.getUTCMonth(),
  date.getUTCDate(),
  time.getUTCHours(),
  time.getUTCMinutes(),
  time.getUTCSeconds()
);

Для дальнейших ссылок на объект Date смотрите здесь.

Ответ 7

Вот метод, использующий regexp для замены времени в дате и затем создания нового объекта Date.

dateTime = new Date(date.toString().replace(/(\d\d:){2}\d{2}/,/(\d\d:){2}\d{2}/.exec(time.toString())[0]));