До появления спецификации 5-го издания метод Date.parse
был полностью зависимым от реализации (new Date(string)
эквивалентен Date.parse(string)
кроме последнего возвращает число, а не Date
). В спецификации 5-го издания было добавлено требование о поддержке упрощенного (и немного неправильного) ISO-8601 , но кроме этого было требование no для того, что Date.parse
/ new Date(string)
должны принять иное, чем то, что они должны были принять любой вывод Date # toString (не сказав, что это было).
Как и в ECMAScript 2017 (издание 8), реализации необходимо было проанализировать их вывод для Дата # toString и Дата # toUTCString , но формат этих строк не был указан.
Начиная с ECMAScript 2019 (версия 9) формат для Дата # toString и Дата # toUTCString указана как (соответственно):
предоставление еще 2 форматов, которые Date.parse должны корректно анализировать в новых реализациях (отмечая, что поддержка не является вездесущей и несовместимые реализации будут оставаться в использовании в течение некоторого времени).
Я бы рекомендовал, чтобы строки даты обрабатывались вручную, а конструктор даты Date использовался с аргументами года, месяца и дня, чтобы избежать двусмысленность:
// parse a date in yyyy-mm-dd format
function parseDate(input) {
var parts = input.split('-');
// new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]])
return new Date(parts[0], parts[1]-1, parts[2]); // Note: months are 0-based
}
Jonas отправил большой ответ на этот вопрос здесь:
Я могу поместить идентификатор сессии ASP.NET в скрытое поле формы?
Я думаю, что можно сделать это реализовать интерфейс IReadOnlySessionState на HttpHandler
Если нет потребность использовать сессию непосредственно, Вы могли всегда хранить любую информацию об идентификационных данных зарегистрированного пользователя в одноэлементном словаре или кэше и ссылаться на нее через SessionID, сохраненный в скрытом поле. Я лично вижу проблемы безопасности в этом, но не войду в них. Я рассмотрел бы выходящие единственные идентификационные данные использования для этого типа реализации.
В реализации HttpHandler или HttpModule Вы не можете всегда получать доступ к сессии от события BeginRequest. Существует другое событие, которое можно обработать, названный OnAcquireRequestState. Если Вы пишете свой код в таком случае, то HttpContext. Текущий. Сеанс не будет пустым.