2010-03-23 15 views

cevap

18

Tarihi değişmezleri were proposed and then retracted, belki ECMA-262 şartname gelecekteki baskısında görürsünüz.

there is no Date literal in JavaScript'dan beri, JSON için bir yol yoktur (JavaScript Nesnesi, bir JavaScript motoru tarafından ayrıştırılamadıysa çok iyi bir isim olmaz ;-)). Kuşkusuz, bu talihsiz bir şey. Birçok web servisi bir ISO 8601 dizgisini, örn. 2010-03-23T23:57Z, ancak JavaScript'te ayrıştırmak için, özel bir kitaplık kullanmanız, özel bir işlev oluşturmanız veya ECMAScript 5.'in Tarih ayrıştırma belirtimine güvenmeniz gerekir; bu, uygulamaların yerel olarak ISO 8601 dizgilerini ayrıştırması gerektiğini belirtir.

o JavaScript ayrıştırılması için gidiyor kendi JSON konusuysa, bir tanımlayıcı ile 1 Ocak 1970 00:00 itibaren milisaniye gibi basit bir şey kullanın ve sonra JSON.parse bir reviver işlevini geçebileceği:

var myJSON = '{"MyDate":"@[email protected]"}' 
var myObj = JSON.parse(myJSON, function (key, value) 
{ 
    // Edit: don't forget to check the type == string! 
    if (typeof value == "string" && value.slice(0, 1) == "@" && value.slice(-1) == "@") 
     return new Date(+value.substring(1, -1)); 
    else 
     return value; 
} 

Açıkçası, ayrıştırma sırasında reviver'ı kullanmak için modern tarayıcılarda bulunan yerel JSON nesnesini veya json2.js'u kullanmanız gerekir.

0

örneğin dize gösterimini kullanan "2010-03-24 ..." ve nesne gösterimi için "{...}" nesne gösterimini kullanır. "{...}"

+0

Tarih hakkında, aynı dizeyi kullanıyorlarsa, dizenin bir tarih olduğunu ve bir dizenin olmadığını nasıl anlar? – OscarRyz

7

Tarih editörleri için özel bir biçim yoktur.

Javascript'te new Date(2010, 2, 23) yazabilirsiniz (maalesef aylar sıfır tabanlı).

+0

yıl - ay - gün sağ mı? JSON'dan ne haber? Bir tarih için kabul edilen değer ne olurdu? – OscarRyz

+0

Evet. JSON için standart yoktur; sıradan bir dize kullanmanız gerekecek. – SLaks

+1

Ve daha sonra, javascript'te nasıl kullanılır? Bir şey yapmalı mıyım: 'var myDate = new Date (jsonObj.date);' ??? – OscarRyz

4

, diziselleştiriciye bağlıdır.

bu biri olabilir:

/tarihi (1224043200000)/

/tarihi (1198908717056)/(MS JSON tarihi)

/tarihi (1198908717056-1.000)/(+/- zaman bölgesi)

yeni tarihi ("2010-03-24") (bu Anladığım kadarıyla genel kabul görmüş 'javascript json')

"2010-03-24"

olduğunu

vb

+8

bu _my_ hatası değildir, gerçek bir değişmez yoktur ve her bir serileştirici farklıdır, fakat bu pratik cevaplar için bir uygulamadır, akılda kalıcı nitratlama değildir. –

İlgili konular