2011-11-24 4 views
1

Possible en double:
How to format a JSON date?Comment convertir ce format de date:/Date (1268524800000) /?

J'appelle un service Web JSON via Javascript, et le champ StartDate est /Date(1268524800000)/. Comment puis-je convertir en un format lisible par l'homme d

+0

Dans quel format est-il? Est-ce un horodatage? Si le service Web a la documentation, il devrait être là –

+5

Même que cette [question] (http://stackoverflow.com/questions/206384/how-to-format-a-json-date) –

+1

Eh bien, ce format est sans doute pas immédiatement reconnaissable. Je pense que beaucoup de downvotes sont un peu durs. (Mais +1 @Nathan pour trouver une super dupe) –

Répondre

8

Essayez ceci:

var str = "/Date(1268524800000)/"; 
var num = parseInt(str.replace(/[^0-9]/g, "")); 
var date = new Date(num); 
alert(date); 

Fiddle: http://jsfiddle.net/dS2hd/

+0

Que faire si le nombre est négatif? – gilly3

+0

il ne devrait pas être parce qu'il représente vraiment une date du système – TruMan1

+0

@ TruMan1 - Toute date avant 1969 a un numéro de série négatif en JavaScript. – gilly3

1

Vous pouvez utiliser une expression régulière pour obtenir les millisecondes, puis utilisez le constructeur Date d'obtenir un objet Date. Une fois que vous avez votre objet date, vous pouvez faire ce que vous voulez avec.

var ms = parseInt("/Date(1268524800000)/".match(/\((\d+)\)/)[1]); 
var d = new Date(ms); 
alert(d.toString()); 
0

Vous pouvez eval(), ou vous pouvez extraire le nombre et le transmettre à un constructeur Date.

if (/^\/Date\((-?\d+)\)\/$/.test(val)) { 
    var serial = parseInt(RegExp.$1); 
    val = new Date(serial); 
} 

J'ai vu les dates exprimées en /Date(1234567890000-0500)/, donc une procédure plus robuste peut être nécessaire pour gérer l'UTC offset.