por - ¿Cómo fusionar dos fechas en JavaScript?
pasar contactos de iphone a android por bluetooth (7)
Tengo 2 objetos de fecha. Quiero tomar la fecha de una y la hora de la otra y combinarlas en un nuevo objeto de fecha.
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)
¿Cómo puedo lograr esto mejor?
Aquí hay un método que usa regexp para reemplazar la fecha en la fecha y luego crear el nuevo objeto Fecha.
dateTime = new Date(date.toString().replace(/(/d/d:){2}/d{2}/,/(/d/d:){2}/d{2}/.exec(time.toString())[0]));
No sé si esto es lo mejor, pero puedes probar lo siguiente:
datetime = new Date(
date.getUTCFullYear(),
date.getUTCMonth(),
date.getUTCDate(),
time.getUTCHours(),
time.getUTCMinutes(),
time.getUTCSeconds()
);
Para más referencias sobre el objeto Date
mira this .
Qué tal algo como esto:
var year = date.getFullYear(),
month = date.getMonth(),
day = date.getDate();
time.setFullYear(year);
time.setMonth(month);
time.setDate(day);
puede utilizar funciones de cadena para construir la cadena de destino ...
datetime = date.toString().substr(0,16) + time.toString().substr(16,40)
luego, si necesita tenerlo como un objeto de fecha, aliméntelo a una new date()
var datetime = new Date(date.getFullYear(), date.getMonth(), date.getDate(),
time.getHours(), time.getMinutes(), time.getSeconds());
var msPerDay = 1000 * 60 * 60 * 24;
var newDateTime = new Date(date.getTime() + (time.getTime() % msPerDay));
EDITAR: el mío asume que la variable de fecha es una fecha sin ninguna hora.
var parts = [''Hours'', ''Minutes'', ''Seconds'', ''Milliseconds''];
for (var i=0, p; p=parts[i], i<parts.length; i++) {
date[''setUTC''+p]( time[''getUTC''+p]() );
}