come mai il seguente codice (in C#) restituisce false:DateTime.Ticks, DateTime.Equals e fusi orari
DateTime d = DateTime.Now;
d.Ticks == d.ToUniversalTime().Ticks; // false
mi aspetto le zecche di un DateTime per essere basati sul tempo UTC. La pagina di MSDN su DateTime.Ticks menziona dice
Il valore di questa proprietà rappresenta il numero di intervalli di 100 nanosecondi trascorsi dal 12:00:00 mezzanotte del 1 gennaio 0001, che rappresenta DateTime.MinValue. Non include il numero di zecche attribuibili ai secondi bisestili.
Mezzanotte di gennaio primo, 0001 .. in quale fuso orario?
Perché DateTime.Ticks può essere dipendente dal fuso orario?
credo che il fatto che le zecche sono diverso è il motivo per cui il seguente codice restituisce anche falsa
DateTime d = DateTime.Now;
d == d.ToUniversalTime(); // false
Il documento MSDN su DateTime.Equals menzioni
t1 e t2 sono uguali se la loro proprietà Ticks i valori sono uguali I loro valori di proprietà Kind non sono considerati nel test per l'uguaglianza.
La mia aspettativa era che DateTime.Ticks sarebbe stato uguale, indipendentemente dal fuso orario.
Mi aspetto che due momenti siano uguali, indipendentemente dal fuso orario in cui si sono verificati. Le mie aspettative sono sbagliate?
Nota che è possibile utilizzare DateTimeOffset (http://msdn.microsoft.com/en-us/library/system.datetimeoffset.op_equality.aspx) che confronta il momento nel confronto di due istanze. –
@ChrisShaffer Grazie, penso che questo è quello che dovrei usare dato che quello che sto cercando sono i momenti esatti nel tempo e non le "date" reali. – GuiSim