2016-04-22 17 views
0

ich habe:Javascript Moment - Zeitzone Unterschied zwischen Terminen in verschiedenen Zeitzonen

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'; 

Jetzt brauche ich Unterschied zwischen now und then subtrahiert zu bekommen (-) 5 Tage, aber in 0.000 so GMT +0. also now muss in Benutzer localtime sein und then muss bei +0000 GMT sein.

Wie kann ich Unterschiede zwischen diesen Daten in Tagen, Stunden, Minuten, Sekunden?

Ich versuche:

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"); 

aber ich result- was falsch ist ...

"27 18:48:55" 
+0

ist, dass 2. Mai oder 5. Februar? –

+0

Was ist das erwartete Ergebnis? – Dogbert

+0

2. Mai ......... – Andrew

Antwort

1

Das Problem ist, dass Sie versuchen, eine Zeitdifferenz als eine Zeit zu verwenden. Sie müssen moment.duration() mit dem Rückgabewert der diff verwenden. Sie sollten auch then.diff(now) anrufen, um eine positive Differenz zu erhalten. Es gab auch einige unnötige Anrufe zu .format() und moment(), die ich entfernte.

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()); 

logs

4 3 15 46 
+0

Ich denke, das war ein Problem, vielen Dank für die Hilfe – Andrew

+0

hm, es gibt ein Problem jetzt mit GMT ... becouse jemand von Dubaigmt +4 und jemand aus Europa nicht den gleichen Unterschied – Andrew

+0

Ich erstelle Auktion und Auktion muss enden gleichzeitig für jede Zeitzone, also User aus Asien muss kommen (4h 33m) aber auch jemand aus Europa muss kommen (4h 33m) und jemand aus USA muss kommen (4h 33m) ... WEIL ICH DASS ICH +0 Zeit bekommen muss und berechnen Sie den Unterschied, weil die Zeit überall gleich ist. – Andrew