Должен ли я использовать DateTime.Сейчас или Дата-Время.UtcNow в HttpCookie.Истекает срок действия и HttpCachePolicy.SetExpires?
Должен ли я использовать DateTime.Сейчас или Дата-Время.UtcNow в HttpCookie.Expires
и HttpCachePolicy.SetExpires
?
Файлы cookie отправляют время " GMT " , но я не знаю, что произойдет, если я отправлю DateTime.Now.AddDays(3)
, Если я буду в GMT+5. То же самое с заголовком http Expires (sec 14.21).
Что я должен использовать?
2 ответа:
В данном случае это не имеет значения.
Внутренне, первое, что делает
.SetExpires
, это преобразует предоставленное вами время datetime в UTC, прежде чем установить его в файле cookie.Имейте в виду, что если ваш потребитель datetime правильно использует класс DateTime, то они одинаковы - просто один из них "привязан" к UTC, а другой нет:
20110701T14:00:00-1:00 (British Summer Time)
И
20110701T13:00:00+0:00 (UTC)
Представляют собой точно такую же дату и время, а именно 1pm UTC.
Пока потребитель справляется с этим правильно (что кажется, посмотрев в отражатель), то это не имеет никакого значения.
Если вы взяли это и передали как временную строку, то, конечно, это может иметь значение, но не в этом случае.Вы можете увидеть эффект с помощью следующего кода (если вы сами не находитесь в UTC - если вы находитесь - измените настройки для тестирования!). Они оба выводят один и тот же datetime, как только вы запросили его для преобразования в UTC.
WriteDateTime(DateTime.Now); WriteDateTime(DateTime.UtcNow); public static void WriteDateTime(DateTime dateTime) { Console.WriteLine(dateTime.ToUniversalTime().ToLongTimeString()); }
Вы должны использовать DateTime.UtcNow метод, потому что это стандарт времени, используемый для файлов cookie. UTC равнозначен GMT.
Из MSDN: System.значение datetime.UtcNow
Получает объект DateTime, который имеет значение текущая дата и время на этом компьютер, выраженный как координированный Универсальное время (UTC).
Обратитесь к этому для объяснения между ними.