¿Cómo es que el siguiente código (en C#) devuelve falso:DateTime.Ticks, DateTime.Equals y zonas horarias
DateTime d = DateTime.Now;
d.Ticks == d.ToUniversalTime().Ticks; // false
yo esperaría que las garrapatas de un DateTime que se basan en la hora UTC. La página de MSDN en DateTime.Ticks menciona dice
El valor de esta propiedad representa el número de intervalos de 100 nanosegundos que han transcurrido desde 12:00:00 la medianoche del 1 de enero de 0001, lo que representa DateTime.MinValue. No incluye la cantidad de marcas atribuibles a segundos intercalares.
Midnight on January first, 0001 .. en qué timezone?
¿Por qué DateTime.Ticks depende de la zona horaria?
supongo que el hecho de que las garrapatas son diferentes es por eso que el siguiente código también devuelve false
DateTime d = DateTime.Now;
d == d.ToUniversalTime(); // false
El doc MSDN en DateTime.Equals menciones
t1 y t2 son iguales si su propiedad garrapatas los valores son iguales. Sus valores de propiedad Kind no se consideran en la prueba de igualdad.
Mi expectativa era que DateTime.Ticks fuera igual, sin importar la zona horaria.
Espero que dos momentos en el tiempo sean iguales sin importar en qué zona horaria ocurrieron. ¿Mis expectativas están equivocadas?
Tenga en cuenta que puede usar DateTimeOffset (http://msdn.microsoft.com/en-us/library/system.datetimeoffset.op_equality.aspx) que compara el momento en el momento cuando se comparan dos instancias. –
@ChrisShaffer Gracias, creo que esto es lo que debería usar, ya que lo que busco son momentos exactos en el tiempo y no "fechas" reales. – GuiSim