utcnow now c# asp.net visual-studio datetime

c# - ¿Por qué DateTime.Now y DateTime.UtcNow no es mi DateTime local actual?



utc time (2)

Asegúrese de que no está manipulando la zona horaria en algún lugar del código, o jugando con System.Globalization.CultureInfo
Intente buscar en todo su código fuente para System.Globalization.CultureInfo puede estar en algún lugar, también puede ser la zona horaria en caché en algún lugar, así que intente llamar a System.Globalization.CultureInfo.CurrentCulture.ClearCachedData() antes de DateTime.Now

.NET DateTime.Now devuelve una hora incorrecta cuando se cambia la zona horaria

Usamos DateTime.Now Ahora, ¡pero la hora no es igual a la hora de nuestro servidor!

Cuando ejecuto mi proyecto, estos son los valores de la propiedad DateTime :

DateTime.Now = {15/14/04 05:20:18 AM} DateTime.UtcNow = {15/14/04 12:20:18 PM}

Pero la hora actual de mi sistema local es:

15/14/04 04:50:18 AM

Mi zona horaria es Teherán (UTC + 03: 30).

Esta es la primera vez que veo este comportamiento! ¿Por qué DateTime.Now no iguala el tiempo de mi computadora?


Su zona horaria es UTC +03: 30, pero debido al horario de verano es +4: 30. Esto significa que cuando DateTime.UtcNow = {15/14/04 12:20:18 PM} , son las 04:50:18 AM en su zona horaria, lo que su reloj confirma.

Por lo tanto, su DateTime.Now no confirma la configuración de fecha y hora de su máquina, por lo que devuelve un valor que no coincide con su reloj.

A partir de por qué la respuesta aceptada funciona puede ser explicada por DateTime.Now utilizando la clase TimeZoneInfo para calcular la hora local desde UTC (usando la zona horaria y el horario de verano), pero no sé por qué se puede desincronizar. ¿Nunca recicla sus grupos de aplicaciones y nunca apaga su máquina? ;)

System.Globalization.CultureInfo.CurrentCulture.ClearCachedData() funciona porque llama a TimeZone.ResetTimeZone() y TimeZoneInfo.ClearCachedData() .