.net asp.net globalization gmt

.net - ¿Debo usar DateTime.Now o DateTime.UtcNow en HttpCookie.Expires y HttpCachePolicy.SetExpires?



asp.net globalization (2)

Debería usar el método DateTime.UtcNow porque ese es el estándar de tiempo utilizado para las cookies. UTC es equivalente a GMT.

Desde MSDN: System.DateTime.UtcNow

Obtiene un objeto DateTime que se establece en la fecha y hora actuales en esta computadora, expresada como la Hora Universal Coordinada (UTC).

Refiérase a this para una explicación entre ellos.

¿Debo usar DateTime.Now o DateTime.UtcNow en HttpCookie.Expires y HttpCachePolicy.SetExpires ?

Las cookies están enviando el tiempo ''GMT'' , pero no sé qué sucede si envío DateTime.Now.AddDays(3) si estaría en GMT + 5. Lo mismo ocurre con el encabezado HTTP de Expires (sec 14.21) .

¿Qué debo usar?


No importa en este caso.

Internamente, lo primero que hace .SetExpires es convertir la fecha y hora suministrada en UTC, antes de configurarlo en la cookie.

Tenga en cuenta que, siempre que su consumidor de fecha y hora use la clase DateTime correctamente, entonces los dos son los mismos, es solo que uno está "basado en líneas de base" a UTC y el otro no:

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

y

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

representan exactamente la misma fecha y hora, a saber, 1 p.m. UTC.

Mientras el consumidor maneje esto correctamente (lo que parece haber visto en el reflector), entonces no hace ninguna diferencia.

Si tomara esto y lo pasara como una cadena de tiempo, entonces, por supuesto, puede hacer una diferencia, pero no en este caso.

Puede ver el efecto con el siguiente código (asumiendo que no está en UTC usted mismo, si lo está, ¡cambie la configuración para probar!). Ambos emiten la misma fecha y hora, una vez que ha solicitado que se convierta a UTC.

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