2016-04-22 5 views
0

у меня есть:Javascript момент - часовой пояс, разница между датами в различных часовых поясах

var now = moment.format(); //get current time 
var days = 5; //days I need to subtract from time(then) 
var then = '05/02/2016 12:00 am'; 

Теперь мне нужно, чтобы получить разницу между now и then (вычесть -) 5 дней, но в +0000 так GMT +0. so now должно быть локально установлено время, а then должно быть на уровне +0000 GMT.

Как я могу получить разницу между этими датами в днях, часах, минутах, секундах?

Стараюсь:

var now = moment().format();       
var then = moment('05/02/2016 12:00 am').utcOffset(+0000).format(); 
    then = moment(then).subtract(5,'days'); 
    d = moment.utc(moment(now).diff(moment(then))).format("DD HH:mm:ss"); 

, но я получаю result- что неправильно ...

"27 18:48:55" 
+0

является то, что 2 мая или 5 февраля? –

+0

Каков ожидаемый результат? – Dogbert

+0

2 мая ......... – Andrew

ответ

1

Проблема заключается в том, что вы пытаетесь использовать разницу во времени как раз. Вам необходимо использовать moment.duration() с возвратным значением diff. Вы также должны позвонить then.diff(now), чтобы получить положительную разницу. Были также некоторые ненужные звонки .format() и moment(), которые я удалил.

var now = moment(); 
var then = moment('05/02/2016 12:00 am').utcOffset(+0000).subtract(5, 'days'); 
var duration = moment.duration(then.diff(now)); 
console.log(duration.days(), duration.hours(), duration.minutes(), duration.seconds()); 

журналы

4 3 15 46 
+0

Я думаю, что это была проблема, спасибо большое за помощь – Andrew

+0

hm, есть проблема теперь с GMT ... потому что кто-то из Dubaigmt +4, а кто-то из Европы не получает такую ​​же разницу – Andrew

+0

Я создаю аукцион и аукцион должен заканчиваться на в то же время для каждого часового пояса, поэтому пользователь из Азии должен получить (4 часа 33 м), но и кто-то из Европы должен получить (4 часа 33 м), а кто-то из США должен получить (4 часа 33 м) ... ПОТОМУ ЧТО Я НУЖДАЮТ +0 раз и вычислять разницу, потому что +0 время везде одинаково. – Andrew