Ядро Linux использует синхронизацию прерывания устройства (мышь, клавиатура, жесткие диски) для генерации энтропии. Существует хорошее статья о Википедии на энтропии.
Если вы не привязаны к сериализатору MS JSON, вы можете использовать Json.NET . Он поставляется с IsoDateTimeConverter для решения проблем с сериализацией дат. Это преобразует даты в строку в формате ISO 8601 .
Например, в нашем проекте сериализация myObject
обрабатывается с помощью следующего кода.
JsonNetResult jsonNetResult = new JsonNetResult();
jsonNetResult.Formatting = Formatting.Indented;
jsonNetResult.SerializerSettings.Converters.Add(new IsoDateTimeConverter());
jsonNetResult.Data = myObject;
Если вы решите окунуться в Json.NET, вы также захотите получить JsonNetResult ], поскольку он возвращает ActionResult, который можно использовать в приложении ASP.NET MVC. Его довольно легко использовать.
Для получения дополнительной информации см .: Хорошее (Дата) время с Json.NET
Не все согласны со мной в том, что это хорошая идея, но я обнаружил, что чаще всего возвращаю отформатированные строки вместо правильных дат. См. Как я обрабатываю даты JSON, возвращаемые ASP.NET AJAX .
Взгляните на сообщение в блоге jQuery, Ajax, ASP.NET и даты .
В нем подробно описано, как работать с ASP.NET MVC и jQuery для передачи дат через JSON между сервером и клиентом.
Это может показаться некрасивым, но работает:
var epoch = (new RegExp('/Date\\((-?[0-9]+)\\)/')).exec(d);
$("#field").text((new Date(parseInt(epoch[1]))).toDateString());
Наверное, не обязательно сопоставлять всю строку, а просто (-? [0- 9] +) достаточно ...
Поиграв с библиотекой Json.NET, мне интересно, почему вы решили использовать IsoDateTimeConverter вместо JavascriptDateTimeConverter.
Я обнаружил, что это проще использовать с Ext JS интерфейсы, которые я использовал при сериализации дат из контроллера MVC.
JsonNetResult jsonNetResult = new JsonNetResult();
jsonNetResult.Formatting = Formatting.Indented;
jsonNetResult.SerializerSettings.Converters.Add(new JavaScriptDateTimeConverter());
jsonNetResult.Data = myObject;
Я возвращаю эти данные в Ext.data.JsonStore, который может получить возвращаемое значение в виде даты без необходимости указывать формат даты для синтаксического анализа.
store:new Ext.data.JsonStore({
url: pathContext + '/Subject.mvc/Notices',
baseParams: { subjectId: this.subjectId },
fields: [
{name: 'Title'},
{name: 'DateCreated', type: 'date' }
]
}),
Возвращенный JSON выглядит следующим образом:
[{"Title":"Some title","DateCreated":new Date(1259175818323)}]
Нет никаких причин для преобразования в формат ISO 8601 и обратно, если вам это не нужно.
Это было найдено в другом сообщении на Stack Overflow:
var date = new Date(parseInt(jsonDate.substr(6)));
Функция substr убирает часть "/Date(", а функция parseInt получает целое число и игнорирует ")/" в конце. Полученное число передается в конструктор Date.