Должен ли я использовать DateTime.Now или DateTime.UtcNow в HttpCookie.Expires и HttpCachePolicy.SetExpires? - программирование
Подтвердить что ты не робот

Должен ли я использовать DateTime.Now или DateTime.UtcNow в HttpCookie.Expires и HttpCachePolicy.SetExpires?

Должен ли я использовать DateTime.Now или DateTime.UtcNow в HttpCookie.Expires и HttpCachePolicy.SetExpires?

Cookies отправляют время GMT, но я не знаю, что произойдет, если я отправлю DateTime.Now.AddDays(3), если я буду в GMT +5. То же самое с Истекает HTTP-заголовок (сек. 14.21).

Что я должен использовать?

4b9b3361

Ответ 1

В этом случае это не имеет значения.

Внутри первое, что делает .SetExpires, - это преобразование поставленного вами времени в UTC, прежде чем устанавливать его в файл cookie.

Помните, что до тех пор, пока ваш потребитель datetime правильно использует класс DateTime, то два одинаковые - это просто "базовый" для UTC, а другой нет:

20110701T14:00:00-1:00 (British Summer Time)

и

20110701T13:00:00+0:00 (UTC)

представляют точно такое же время и время, а именно 1pm UTC.

Пока потребитель правильно обрабатывает (что кажется, смотрев в отражатель), это не имеет никакого значения.

Если вы принимаете это и передаете его как строку времени, то, конечно, это может иметь значение, но не в этом случае.

Вы можете увидеть эффект со следующим кодом (если вы не находитесь в UTC самостоятельно - если вы - измените свои настройки, чтобы проверить!). Они оба выводят одно и то же время, как только вы попросили его преобразовать в UTC.

WriteDateTime(DateTime.Now);
WriteDateTime(DateTime.UtcNow);

public static void WriteDateTime(DateTime dateTime)
{
   Console.WriteLine(dateTime.ToUniversalTime().ToLongTimeString());   
}

Ответ 2

Вы должны использовать метод DateTime.UtcNow, потому что это стандарт времени, используемый для файлов cookie. UTC эквивалентен GMT.

От MSDN: System.DateTime.UtcNow

Получает объект DateTime, для которого установлено значение текущая дата и время на этом компьютер, выраженный как скоординированный Универсальное время (UTC).

Обратитесь к этому для объяснения между ними.