En JavaScript, las fechas se pueden transformar al número de milisegundos desde epoc llamando al getTime()
método o simplemente usando la fecha en una expresión numérica.
Entonces, para obtener la diferencia, solo resta las dos fechas.
Para crear una nueva fecha basada en la diferencia, simplemente pase el número de milisegundos en el constructor.
var oldBegin = ...
var oldEnd = ...
var newBegin = ...
var newEnd = new Date(newBegin + oldEnd - oldBegin);
Esto debería funcionar
EDITAR : error fijo señalado por @bdukes
EDITAR :
Para una explicación de la conducta, oldBegin
, oldEnd
, y newBegin
son Date
instancias. Llamando a los operadores +
y -
desencadenará Javascript autocastear y llamará automáticamente al valueOf()
método prototipo de esos objetos. Sucede que el valueOf()
método se implementa en el Date
objeto como una llamada a getTime()
.
Así que básicamente: date.getTime() === date.valueOf() === (0 + date) === (+date)
Date
objetos? Es difícil saber qué tipo de objeto se supone que son, ya que aquí se omite la declaración de variable.JavaScript admite perfectamente la diferencia de fechas desde el primer momento
Ahora algunas trampas. Prueba esto:
Entonces, si tiene riesgo de agregar un número y una Fecha, convierta la Fecha en
number
directamente.Mi primer ejemplo demuestra el poder del objeto Date, pero en realidad parece ser una bomba de tiempo.
fuente
-
convierte los argumentos en números, por lo que Date devuelve su valor de hora. El+
operador está sobrecargado, por lo que podría hacer una suma, coerción al número o concatenación. Dado que las fechas obligan a String en este caso,+
hace la concatenación. La confusión no es culpa del objeto Date, sino de la sobrecarga de operadores.Ver DEMO de JsFiddle
para su código HTML:
fuente
Si no le importa el componente de tiempo, puede usar
.getDate()
y.setDate()
solo para establecer la parte de la fecha.Entonces, para establecer su fecha de finalización en 2 semanas después de su fecha de inicio, haga algo como esto:
Para devolver la diferencia (en días) entre dos fechas, haga lo siguiente:
Finalmente, modifiquemos la primera función para que pueda tomar el valor devuelto por 2nd como parámetro:
fuente
GetDateDiff()
romperá las barreras del mes. Por ejemplo, 2011/04/26 y 2011/05/01 devolverán -25, pero el desplazamiento debe ser de 5 días.Gracias @ Vincent Robert , terminé usando tu ejemplo básico, aunque en realidad lo es
newBegin + oldEnd - oldBegin
. Aquí está la solución final simplificada:fuente
getTime
y otras noDependiendo de sus necesidades, esta función calculará la diferencia entre los 2 días y devolverá un resultado en días decimal.
fuente
Math.abs()
llamada y siempre obtendrá un decimal positivo.date.getTime()
para obtener el tiempo en el futuro / pasado. `var nextMinute = new Date (someDate.getTime () + 60 * 1000);Si usa moment.js, hay una solución más simple, que le dará la diferencia en días en una sola línea de código.
Se pueden encontrar detalles adicionales en la página de moment.js
Saludos, Miguel
fuente
fuente
código extendido de modificación alternativa.
http://jsfiddle.net/vvGPQ/48/
fuente
fuente
fuente
este código llena la duración de los años de estudio cuando ingresa la fecha de inicio y la fecha de finalización (califique la fecha acreditada) del estudio y verifique si la duración es menor a un año si la respuesta es sí, la alerta un mensaje tenga en cuenta que hay tres elementos de entrada, el primero
txtFromQualifDate
y segundotxtQualifDate
y tercerotxtStudyYears
mostrará el resultado del número de años con fracción
fuente
getFullYear
que fue diseñado para eso. ------- Consulte la biblioteca datejs en googlecode que posiblemente admita la mayoría de casos de esquinaSi usa objetos Date y luego usa el
getTime()
función para ambas fechas, le dará sus horas respectivas desde el 1 de enero de 1970 en un valor numérico. A continuación, puede obtener la diferencia entre estos números.Si eso no le ayuda, consulte la documentación completa: http://www.w3schools.com/jsref/jsref_obj_date.asp
fuente
El siguiente código devolverá los días que quedan desde hoy hasta la fecha de futuros.
Dependencias: jQuery y MomentJs.
fuente
fuente
ESTO ES LO QUE HICE EN MI SISTEMA.
fuente