2016-05-26 17 views
1

Ich mag würde das Datum Unterschied bekommen:Dateformat in Javascript

var dateString='2015-04-07T10:46:25Z'; 
var dt = new Date(value); 
var now = new Date(); 
var _MS_PER_DAY = 1000 * 60 * 60 * 24; 
var utc1 = Date.UTC(dt.getFullYear(), dt.getMonth(), dt.getDate()); 
var utc2 = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()); 
var days=Math.floor((utc2 - utc1)/_MS_PER_DAY);//this is 415 

Das Ergebnis muss in diesem Format sein: 415d, 03:06:33

was den besten Weg wäre, das zu tun ? Ich bekomme ein Date, aber die Zeit fehlt.

+1

eine lib verwenden wie moment.js, die stark vereinfacht Datum/Uhrzeit-Manipulation in JS. –

Antwort

0
Try this 

    var datetime = new Date("2015-04-07T10:46:25Z"); 
    var now = new Date(); 
    if (datetime < now) { 
      var diffTime = now - datetime; 
     }else{ 
      var diffTime = datetime - now; 
     } 
     var days = Math.floor(diffTime/1000/60/(60 * 24)); 

     var dateDiff = new Date(diffTime); 

     var hour = dateDiff .getHours().toString().length == 1 ? '0' + dateDiff .getHours() : dateDiff .getHours(); 
     var minute = dateDiff.getMinutes().toString().length == 1 ? '0' + dateDiff.getMinutes() : dateDiff.getMinutes(); 
     var seconds = dateDiff.getSeconds().toString().length == 1 ? '0' + dateDiff.getSeconds() : dateDiff.getSeconds(); 

     console.log(days + "d "+ hour + ":" + minute + ":" + seconds); 
+0

@Simon hat die Antwort aktualisiert ... benutze bitte das Update –

0

benötigen Sie Modulus

var dt = new Date('2015-04-07T10:46:25Z'); 
 
var now = new Date(); 
 

 
var milSecondMil = 1000; 
 
var secondMil = milSecondMil * 60; 
 
var hourMil = secondMil * 60; 
 
var dayMil = hourMil * 24; 
 

 
var diff = now - dt; 
 

 
var days = Math.floor(diff/dayMil); 
 

 
var daysRemainder = diff % dayMil; 
 

 
var hours = Math.floor(daysRemainder/hourMil); 
 

 
var hoursRemainder = daysRemainder % hourMil; 
 

 
var seconds = Math.floor(hoursRemainder/secondMil); 
 

 
var secondsRemainder = hoursRemainder % secondMil; 
 

 
var milSeconds = Math.floor(secondsRemainder/milSecondMil); 
 

 
console.log(days + ' days - ' + hours + ' hours - ' + seconds + ' seconds - ' + milSeconds + ' mil');

0

ich auf diese Weise getan haben, verwenden:

var dt = new Date(value); 
    var now = new Date(); 
    var date1_ms = dt.getTime(); 
    var date2_ms = now.getTime(); 
    var diff=(date2_ms - date1_ms)/1000; 
    var tm = new Date(null, null, null, null, null, Math.floor(diff % 86400)).toTimeString().split(" ")[0]; 

    return Math.round(diff/(60 * 60 * 24)) + 'd, ' + tm; 
Verwandte Themen