Под «My JSON» я полагаю, что вы имеете в виду способ, которым Microsoft ASP.NET передает объект даты и времени не так, как вы написали, а с косой чертой также в конце:
/Date(1307514780000+0530)/
JSON не поддерживает собственный тип JavaScript Date () , так что на самом деле это простая строка JSON, но Microsoft взламывает ее немного больше и фактически отправляет:
\/Date(1307514780000+0530)\/
И это разрешено для строки JSON, даже если обратная косая черта не требуется.(Эти две строки идентичны вашему клиентскому программному обеспечению JSON, но когда Microsoft JScript видит эти обратные слеши, он обрабатывает их как особую структуру. И, да, это высший взлом.)
Значение до знака(которое также может быть «-») - это количество миллисекунд с 1970-01-01 00:00:00 UTC.Знак и значение после него представляют часовой пояс презентации, в котором нет необходимости преобразовывать значение в собственный объект JavaScript Date () .Знак указывает, является ли часовой пояс до (+) или после (-) UTC, а числа отформатированы как «ЧЧММ», где «ЧЧ» - это количество часов, а «ММ» - это количество минут.(В этом случае «+0530» - это то же смещение часового пояса, что и стандартное время Индии, то есть «IST».)
Чтобы преобразовать его в собственный объект Date () с использованием стандартногокросс-браузер-совместимый JavaScript:
function getDateFromAspString(aspString) {
var epochMilliseconds = aspString.replace(
/^\/Date\(([0-9]+)([+-][0-9]{4})?\)\/$/,
'$1');
if (epochMilliseconds != aspString) {
return new Date(parseInt(epochMilliseconds));
}
}
Обратите внимание, что эта функция ничего не возвращает, если строка не является строкой даты и времени ASP.NET.Вы можете сравнить (===) результат с undefined , чтобы узнать, было ли что-либо возвращено.
В моем браузере этот вызов:
getDateFromAspString("/Date(1307514780000+0530)/").toString()
возвращает эту строку:
"Wed Jun 08 2011 01:33:00 GMT-0500 (Central Daylight Time)"
См. Также: