2010-03-23 18 views

risposta

18

Data letterali were proposed and then retracted, forse li vedremo in una futura edizione della specifica ECMA-262.

Dal there is no Date literal in JavaScript, non esiste alcun valore letterale per JSON (la notazione oggetto JavaScript non sarebbe un nome troppo buono se non fosse analizzata da un motore JavaScript ;-)). Certo, è sfortunato. Molti servizi Web generano una stringa ISO 8601, ad es. 2010-03-23T23:57Z, ma per analizzarlo in JavaScript è necessario utilizzare una libreria personalizzata, creare una funzione personalizzata o fare affidamento sulle specifiche di analisi della data di ECMAScript 5th, che stabilisce che le implementazioni devono analizzare le stringhe ISO 8601 in modo nativo.

Se è il vostro proprio JSON che sta per essere analizzato in JavaScript, si potrebbe usare qualcosa di semplice come millisecondi dal 1 gennaio 1970 00:00, con un identificatore e poi passare una funzione rianimatore a JSON.parse:

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; 
} 

Ovviamente, è necessario utilizzare l'oggetto JSON nativo trovato nei browser moderni o json2.js per utilizzare il reviver durante l'analisi.

0

Per rappresentazione di stringa di data JSON utilizza la notazione stringa di esempio "2010-03-24 ..." e per la rappresentazione dell'oggetto utilizza la notazione dell'oggetto "{...}"

+0

Informazioni sulla data, come fa a sapere che una stringa è una data e non una stringa se utilizzano la stessa notazione? – OscarRyz

7

Non esiste un formato speciale per i valori letterali di data.

In Javascript, è possibile scrivere new Date(2010, 2, 23) (i mesi sono a base zero, sfortunatamente).

+0

anno - mese - giorno giusto? Che mi dici di JSON? Quale sarebbe un valore accettato per una data? – OscarRyz

+0

Sì. Per JSON, non esiste uno standard; dovrai usare una stringa ordinaria. – SLaks

+1

E in seguito, come si usa in javascript? Dovrei fare qualcosa del tipo: 'var myDate = new Date (jsonObj.date);' ??? – OscarRyz

4

dipende dal serializzatore.

potrebbe essere uno dei seguenti:

/Data (1224043200000)/

/Data (1.198.908,717056 millions)/(MS JSON Data)

/Data (1198908717056-1.000)/(+/- fuso orario)

new Date ("2010-03-24") (questa è la generalmente accettata 'javascript json' da quanto ho capito)

"2010-03-24"

ecc

+8

non è _my_ fault non c'è letterale reale e ogni serializzatore è diverso, ma questo è un posto per risposte pratiche, non pedopalco. –