2014-01-23 3 views
10

Я использую moment.js и хочу рассчитать разницу между двумя временными метками, отформатировать их потом и отобразить их в div.moment.js diff date formatting

var diffTime = moment(1390310146.791877).diff(1390309386.271075); 

Это дает мне 760 секунд, но я хочу, чтобы отформатировать его, как это:

(дни, час, мин, сек) и показывают только дни, часы и секунды, если они выше, чем 0.

Как это достичь?

ответ

16

попробовать это

var diffTime = moment(moment(1390310146.791877).diff(1390309386.271075)).format('H m s'); 

он будет выдавать "5 30 0"

Редактировать

здесь простой способ получить разницу. для этого время должно быть в том же часовом поясе.

var a = moment(1390310146.791877); 
var b = moment(1390309386.271075); 
a.diff(b)//To get the difference in milliseconds 
a.diff(b,'seconds')//To get the difference in seconds 
a.diff(b,'minutes')//To get the difference in minutes 
a.zone()//Get the timezone offset in minutes 

надеюсь, что это поможет.

+3

Странно, что дает мне 1 0 0 ... – Newcoma

+0

Он должен вернуться около 12 минут и 40 секунд – Newcoma

+1

это зависит от локальной временной зоне браузера. –

15

moment.duration следует использовать

var diffTime = moment('2016-06-13T00:00:00+08:00') 
    .diff('2016-06-13T00:00:00+00:00'); 
var duration = moment.duration(diffTime); 
var years = duration.years(), 
    days = duration.days(), 
    hrs = duration.hours(), 
    mins = duration.minutes(), 
    secs = duration.seconds(); 

var div = document.createElement('div'); 
div.innerHTML = years + ' years ' + days + ' days ' + hrs + ' hrs ' + mins + ' mins ' + secs + ' sec'; 
document.body.appendChild(div); 

jsfiddle

+0

Для того, чтобы это правильно работало, вам также понадобятся месяцы. 'months = duration.months()' –

Смежные вопросы