Zaman ofseti ile uğraşmak için moment.js
kullanmaya çalışan bir sorunla karşı karşıyayım. (Benim durumumda değeri -240 olduğu içinde)Anlık olarak zaman ofseti güncelleniyor() utcOffset()
<script type="text/javascript">
$(document).ready(function() {
$('input#timeoffset').val(moment().utcOffset());
});
</script>
doğru depolanır offset:
Bir gizli girişteki ofset yerel kullanıcı süresini toplar. Daha sonra bazı db utcDate böyle bir şey yaptığını saklanan güncellemeyi deneyin (utc zaman içinde çalışır) sunucu tarafında:
var userDate = moment(utcDate).utcOffset(offset)
Benim konuyla şudur: Benim kod çalıştırırsanız yukarıdaki gibi hiçbir etkisi olsun anlatılan : Ben ofset işareti çevirin
utcDate: 20151001 012421 +0000
userDate: 20151001 012421 +0000
alıyorum:
utcDate: 20151001 012421 +0000
Açıkça (beklentim ilk sürümü doğru olmasıydı bile) yanlış bir şey yapıyorum
userDate: 20151001 052421 +0400
, herhangi bir ipucu var mı?
Ben moment.js v2.10.6 kullanıyorum istemci tarafındaise sunucu tarafında an-timezone.js v0.4.0 ve moment.js v2.10.6 üzerinde
Ofset'i uyguladıktan sonra 'userDate' ile ne yaparsınız? Muhtemelen 'toDate', 'valueOf', 'unix' ya da duvarı zamandan ziyade anı yansıtan diğer yöntemleri çağırıyorsunuzdur. –
Ayrıca, "saat dilimi! = Kayma" yı hatırlayın.Kullanıcının * geçerli * ofsetini saklar ve daha sonra bunu zamanında rastgele bir noktaya uygularsanız, o zaman için yanlış bir sapma olabilir. Zaman dilimleri, gün ışığından yararlanma saati ve diğer çeşitli nedenlerden dolayı ofsetleri değiştirebilir. –
@MattJohnson aslında ben sadece .format (...) 'sonuçları yazdırmak için. Yukarıda bildirdiğim sonuçlar şöyle yazılır: 'console.log ('utcDate:' + moment (utcDate) .format ('YYYYMMDD HHmmss ZZ')); console.log ('userDate:' + moment (utcDate) .utcOffset (ofset) .format ('YYYYMMDD HHmmss ZZ')); '. 'UtcDate' ofsetsizdir. – Pierluigi