2016-05-09 27 views
0

Ich habe vier Felder in meinem HTML. Zwei sind Datapicker-Felder (eines für das Datum von dem anderen für das Datum bis). In ähnlicher Weise sind die anderen zwei Zeitpicker-Felder (eines für die Von-Zeit und andere für die Zu-Zeit).Erhalten Sie Zeitunterschied zwischen zwei verschiedenen Daten mit Zeitstempel?

<input type="text" id="from-datepicker"/> 
    <input class="timepicker" name="timepicker" id="from-timepicker"/> 
<input type="text" id="to-datepicker"/> 
    <input class="timepicker" name="timepicker" id="to-timepicker"/> 

Die Daten werden angezeigt und in yyyy-mm-dd-Format verwendet, während das Zeitformat 24-Stunden-Uhr wie 23.45.52 ist. Nun, ich möchte nur wissen, wie kann ich die Zeitdifferenz zwischen zwei Zeitstempeln, so dass die Differenz zwischen 20 Oct 2015 11:00:00 und 28 Oct 2015 13:15:00 wird wieder berechnen 7 days 2 hours and 15 minutes

Ich weiß, wie kann ich den Unterschied zwischen zwei Daten in JavaScript, aber bin Gibt es eine Bibliothek, die Unterschiede mit dem Zeitstempel bietet?

+0

Verwenden Sie moment.js, 2.1kb der Schönheit –

+0

werden Sie eine Bibliothek für jede 30 Linienfunktion verwenden, die Sie brauchen? –

+0

Ich habe dich nicht bekommen @ChrisAaker –

Antwort

2

Hier ist eine Funktion, die ich verwende. Ändern Sie einfach die Ausgabe, um den "Vor" -Teil zu entfernen. Vielleicht ändern Sie client_time und server_time, um mehr über Ihre spezielle Verwendung zu erfahren.

Und tatsächlich vielleicht fügen Sie ein anderes if/else für Ihr spezielles Bedürfnis, das dem allgemeinen Format folgend.

Pub.prettyTime = function (server_time) { 
    var MINUTE = 60,  // 000060 seconds in a minute 
     HOUR = 3600,  // 003600 seconds in an hour 
     DAY = 43200,  // 43,200 seconds in a day 
     NORMALIZE = 1000, // 00.001 seconds in a millisecond, flipped due to the .1 inaccuracy rule 

     // Date.now() is in milliseconds so divide by 1000, to get client_time in seconds 
     // this way client time and server time have the same units for comparison 
     // this is UTC time 
     client_time = Math.round(Date.now()/NORMALIZE), 
     rounded_time, 
     elapsed_time, 
     string = ''; 

    // here we ensure we never get a negative elapsed time 
    // because clients are not synched to the server 
    // in the case of negative elapsed time, the server is ahead of the client 
    // and we will jus say "just a second ago" 
    if (client_time < server_time) { 
     client_time = server_time; 
    } 
    elapsed_time = (client_time - server_time); 

    // create the output string 
    if (elapsed_time === 0) { 
     string = ' just a second ago'; 

    // 0 to 1 minute ago 
    } else if ((elapsed_time > 0) && (elapsed_time < MINUTE)) { 
     string = (elapsed_time === 1) ? 'one second ago' : 
       (elapsed_time + ' seconds ago'); 

    // 1 minute to 1 hour ago 
    } else if ((elapsed_time >= MINUTE) && (elapsed_time < HOUR)) { 
     rounded_time = Math.floor(elapsed_time/MINUTE); 
     string = (rounded_time === 1) ? 'one minute ago' : 
       (rounded_time + ' minutes ago'); 

    // 1 hour to to 1 day ago 
    } else if ((elapsed_time >= HOUR) && (elapsed_time < DAY)) { 
     rounded_time = Math.floor(elapsed_time/HOUR); 
     string = (rounded_time === 1) ? 'one hour ago' : 
       (rounded_time + ' hours ago'); 

    // more than 1 day ago 
    } else if ((elapsed_time >= DAY)) { 
     rounded_time = new Date(server_time * NORMALIZE); 
     string = 'on ' + rounded_time.toLocaleDateString(); 
    } 
    return string; 
}; 

Des Weiteren können Sie in Ihrem Format stecken oben in Ihrer Frage an den Konstruktor des normierten Zeitstempel zu erhalten - var d2 = new Date("28 Oct 2015 13:15:00") und schließlich d2.valueOf() gelten die Unix-Zeitstempel zu erhalten. Sie können auch die Differenz der Daten (d2 - d1) nehmen.

Mit dieser Info. Sie sollten in der Lage sein zu erreichen, was Sie brauchen.

+0

Denken Sie daran ... http://english.stackexchange.com/questions/88485/proper-timezone-acronym-usage-pt-vs-pdt-or-pst –

1

Sie können momentjs verwenden.

Überprüfen Sie substract Teil in docs.

+0

Hallo Y galbel, Ich bin Neuling zu JS . Können Sie erklären, wie moment.js in meinem Fall den Zweck erfüllen kann? Vielen Dank im Voraus :) –

+0

Überprüfen Sie diese Antwort http://stackoverflow.com/a/37092950/1543596 – Ygalbel