2016-11-03 18 views

cevap

5

var timedifference = new Tarih() getTimezoneOffset();

Bu, istemcilerden saat dilimi farkını UTC zamanından döndürür. Daha sonra istediğiniz gibi oynayabilirsiniz.

+11

Bu, * geçerli * saat dilimi * ofset * değerini döndürür. Saat dilimi değil. Ofset, gün ışığından yararlanma saati gibi şeylere bağlı olarak değişebilir. [Timezone tag wiki] 'de "Time Zone! = Offset" bölümüne bakın (http://stackoverflow.com/tags/timezone/info) –

+1

@ MattJohnson'un cevabı bu soruya verilen gerçek cevaptır. Teknik olarak bu cevap, ofset ile ilgili olduğu için yanlıştır, saat dilimi ile ilgili değil (farklı kavramlar). – dudewad

48

moment.js kullanarak kullanın:

var tz = moment.tz.guess(); 

Böyle ABD Pasifik saat dilimine America/Los_Angeles gibi bir IANA saat dilimi tanımlayıcı dönecektir. Bu, documented here. argüman olarak geçirilen tarihte tarayıcı zaman ve UTC arasındaki dakika arasındaki zaman farkını döndürür moment(date).offsetUtc()

+0

Ayrıca bkz. [Bu yanıt] (http://stackoverflow.com/a/16526897/634824) ve [bu yanıt] (http://stackoverflow.com/a/18252251/634824). –

+1

Harika cevap - Atanmış! Ayrıca lütfen "momet-timezone" versiyonunu kullanın ** 0.5.4 ** veya daha yüksek ... daha fazla açıklama için lütfen bu konuya bakın https://github.com/moment/moment-timezone/issues/324 – ymz

+0

+1. Tz kancasını kullanmak için tarihin kullanıldığı anı kullandığınızdan emin olun. https://momentjs.com/timezone/docs/ node.js ile kurulabilmesi için bu komutu kullan 'npm install moment-timezone' sonra buna ihtiyaç duyuyordu' window.moment = require ('moment-timezone'); ' –

0

Not. Bir global bu farkı ayarlamak ve bir gün ışığından diliminde iseniz tüm tarihler için KULLANMAYIN olmalıdır:

// this is WRONG in daylight saving zones. don't do this! 
const OFFSET_UTC = moment().offsetUtc(); 

Yukarıdaki ile ve eğer çalışan tüm tarihleri ​​bir olan mevcut farkı uygular Gün ışığından yararlanma bölgesi, yılın diğer yarısındaysa, tarihleriniz bir saat kadar kapalı olacaktır.

küçük işlevi Doğru yaz saati bölgelerinde zaman farkı ayrıştırmak yazdı:

function toUtcMoment(date) { 
    return moment(date).add(moment(date).offsetUtc(), 'minutes').utc() 
} 

Doğru bir uygulama içine (tarayıcı saat diliminde her zaman) datepickers gelen tarihleri ​​geçmek için yukarıdaki kullanabileceğiniz UTC saat dilimini kullanır.

İlgili konular