2010-09-23 23 views
5

Örneğin bir DateTime nesnesini döndüren bir web servisim var: DepartureDate. Ben ajax kullanmak bu getir ve benim görünümünde bu işlevi ile bir javascript tarih nesnesine JSON tarih dizesi dönüştürmek için:Saat dilimi olmadan JSON tarihlerini dönüştürme

function convertToDate(jsonDate) { 
    return eval("new " + jsonDate.substring(1, jsonDate.length - 1)); 
} 

sorun new Date() yüzden dikkate istemciler bilgisayarda yerel zaman almasıdır Farklı ülkelerdeki müşteriler farklı tarihler alırlar. Web servisinden iade edilen kesin tarihi almak istiyorum. Bunu gerçekleştirmenin kolay bir yolu var mı?

+0

değişkeni "jsonDate" –

+0

değeri örneğin ne olabileceğini "/ Tarih (1285321800000) /" – knepe

cevap

6

sorun new Date() dikkate

Hayır istemcilerin bilgisayarda yerel zaman almasıdır. Zaman damgası yapıcısını kullanarak yeni bir Tarih oluşturmak bir UTC zaman damgası alır. UTC + 1 benim makinede Örneğin

:

new Date(0) // Thu Jan 01 1970 01:00:00 GMT+0100 (CET) 

Tamam, varsayılan toStringgörüntüleryanlış görünüyor, ama aslında doğru zamanı 01:00:00 bu tarihi. UTC + 1'de 01:00:00 UTC'de 00:00:00, saat başı 0 tarafından açıklanan an. Eğer UTC bir zaman damgası gelen oluştururken ettik tarihleri ​​görüntülemek istiyorsanız

, date.toUTCString() kullanabilir veya getirme ve getUTCMonth() vb

Lütfen olsa da, hiçbir eval, getUTCFullYear() kullanarak tarih consistuent parçalarını biçimlendirmek.

new Date(parseInt(jsonDate.slice(6, -1), 10)) 
+0

senin büyük cevap bobince için teşekkür ederiz. Tarihlerde ve eşyalarda pek iyi değilim, bu yüzden burada her şeyi anlayamayabilirim, ama önerdiğin şeyi yaptım ve hala aynı sonuç. Zaman dilimini makinemde değiştirirsem, zaman değişiyor (onların saat diliminde ne olursa olsun, aynı kalmasını istiyorum ve AST saat dilimini takip etmelerini istiyorum.) – knepe

+0

* toString() tarafından görüntülenen zaman * yansıtacak şekilde değişir Saat diliminiz, ama bu tarihin farklı olduğu anlamına gelmez. 'Yeni Tarih (1285321800000) .getUTCHours()', saat diliminizden bağımsız olarak her zaman '9’dur. 'GetUTC ...' ve 'setUTC ...' işlevleri ile sopa ve tarih beklediğiniz gibi davranacaktır. – bobince

İlgili konular