2013-02-28 15 views
7

test beklediğiniz gibi UTC çalışmaz:moment.js - ı o düğüm konsolunda

var moment = require('moment'); 

// create a new Date-Object 
var now = new Date(2013, 02, 28, 11, 11, 11); 

// create the native timestamp 
var native = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes(), now.getSeconds()); 

// create the timestamp with moment 
var withMoment = moment.utc(now).valueOf() 
// it doesnt matter if i use moment(now).utc().valueOf() or moment().utc(now).valueOf() 

// native: 1364469071000 
// withMoment: 1364465471000 
native === withMoment // false!?!?! 

// this returns true!!! 
withMoment === now.getTime() 

neden isnt yerli withMoment aynı zaman damgası? withMoment, geçerli yerel saatten hesaplanan zaman damgasını neden döndürür? Bunu nasıl başlatabilirim moment.utc() Date.UTC() ile aynı değeri verir?

cevap

11

Çağrı moment.utc() Eğer Date.UTC aradığınız aynı şekilde:

var withMoment = moment.utc([now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes(), now.getSeconds()]).valueOf(); 

Ben yerel saat diliminde now hayatını üstlenecek yapacak moment.utc(now) arayarak düşünüyorum ve bu farkın dolayısıyla ilk UTC dönüştürecektir .

+1

zaten denemiştim ve bunun işe yaradığını gördük. sahip olduğum tek seçenek bu mu? moment.js düşünce Sen (moment.utc '' için native' geçebilir) 'yerine' arasında now', bu çok çalışacağız bana kodu ve saati ;-( – hereandnow78

+0

kazandırır. i wanted hala neyi – robertklep

+0

evet, ama ty ;-) – hereandnow78

3

Ne yapıyorsun esasen budur. now geçerli saatle inşa edilmiştir ve native UTC inşa edilmiştir

var now = new Date(2013, 02, 28, 11, 11, 11); 
var native = Date.UTC(2013, 02, 28, 11, 11, 11); 

console.log(now === utc); // false 
console.log(now - utc); // your offset from GMT in milliseconds 

olduğundan, bunlar ofset senin tarafından farklı olacaktır. 11:00 PST! = 11 AM GMT.