La diferencia de tiempo en Nodejs?

Estoy tratando de encontrar una manera para obtener la diferencia de tiempo en segundos entre dos fechas.

Por ejemplo, la diferencia en segundos entre:

2013-5-11 8:37:18

2013-5-11 10:37:18

Intentado:

function timeDifference(laterdate, earlierdate) {
var difference = laterdate.getTime() - earlierdate.getTime();
var daysDifference = Math.floor(difference/1000/60/60/24);
difference -= daysDifference*1000*60*60*24
var hoursDifference = Math.floor(difference/1000/60/60);
difference -= hoursDifference*1000*60*60
var minutesDifference = Math.floor(difference/1000/60);
difference -= minutesDifference*1000*60
var secondsDifference = Math.floor(difference/1000);
return secondsDifference;
}

Pero que no funciona en Nodejs, error con

getTime()

función no se encuentra

¿Qué le pasa a la función? Las cadenas o la fecha de los objetos?
Im pasar cadenas
npm install moment -> moment(laterdate).diff(earlierdate, 'days')
Utilice momento (momentjs.com), que va a cambiar tu vida.
“segundos entre dos fechas” <-> “estoy pasando cadenas”. Uhm, ¿qué?

OriginalEl autor Alosyius | 2013-05-11

4 respuestas

  1. 30
    var moment = require('moment')
    var startDate = moment('2013-5-11 8:73:18', 'YYYY-M-DD HH:mm:ss')
    var endDate = moment('2013-5-11 10:73:18', 'YYYY-M-DD HH:mm:ss')
    var secondsDiff = endDate.diff(startDate, 'seconds')
    console.log(secondsDiff)

    Tendrá la moment.js módulo

    npm install -S moment
    Creo que usted necesita para agregar var secondsDiff = momento(endDate).diff(startDate, ‘segundos’)
    endDate.diff is not a function
    creo que usted necesita para instalar el ‘momento’

    OriginalEl autor Noah

  2. 4

    La timezonecomplete módulo tiene soporte para la fecha de diferencias, incluso con fechas en diferentes zonas horarias. Devuelve una Duración de objeto que es unidad de cuenta, no sólo un “número” que representa “milisegundos”:

    var tc = require("timezonecomplete");   
    var start = new tc.DateTime("2014-06-26T12:00:00 Europe/Amsterdam");
    var end = new tc.DateTime("2014-06-26T12:00:00 UTC");
    var duration = end.diff(start);  //unit-aware duration
    console.log(duration.minutes()); //-120
    console.log(duration.hours()); //-2

    OriginalEl autor rogierschouten

  3. 1

    Obtener el resto de los días :

    var moment = require('moment');
    var startDate = moment(new Date()).format("YYYY-MM-DD");
    var endDate = moment(new Date("Tue Aug 27 2015 09:13:40 GMT+0530 (IST)")).format("YYYY-MM-DD");
    var remainingDate = moment(endDate).diff(startDate, 'days');
    console.log(remainingDate) //at time of posting, 106 days
    Esto parece ya no ser una respuesta válida: Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822 /ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info. me imagino que fue una buena respuesta durante mucho tiempo, pero ahora tenemos que desalienta a seguir este camino. No hay algo más? Debo volver a hacer esta pregunta?
    Esta parece ser una mejor manera de hacerlo: no dar un mismo mensaje de advertencia. var minutesDiff = moment(recievedTimeStamp, 'HH:mm a').fromNow();

    OriginalEl autor Shaikh Shahid

  4. 0

    Podemos usar este código optimizado demasiado,

    function calculateDays(startDate,endDate)
    {
    var start_date = moment(startDate, 'YYYY-MM-DD HH:mm:ss');
    var end_date = moment(endDate, 'YYYY-MM-DD HH:mm:ss');
    var duration = moment.duration(end_date.diff(start_date));
    var days = duration.asDays();       
    return days;
    }

    Aquí es necesario instalar moment y desea importar antes de usar.

    OriginalEl autor K.Suthagar

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *