DateTime d1=new DateTime(2015, 1, 1, 0, 0, 0, DateTimeKind.Utc);
DateTime d2=new DateTime(2015, 1, 1, 0, 0, 0, DateTimeKind.Local);
Console.WriteLine(d1==d2); // prints true
Console.WriteLine(d1<d2); // prints false
Console.WriteLine(d1.CompareTo(d2)); // prints 0
Console.WriteLine(d1.ToUniversalTime()==d2.ToUniversalTime()); // prints false
Questo mi sembra un bug, se non lo è color me surprised.DateTime Compare Ignora Kind?
Devo chiamare ToUniversalTime() per ogni confronto o esiste un'alternativa migliore?
Come evitare le insidie come dimenticare di chiamare ToUniversalTime() o ottenere un risultato errato a causa di DateTimeKind.Unspecified?
Non * esattamente *, è nella documentazione - è necessario assicurarsi che gli orari siano nello stesso fuso orario. Inoltre, 'DateTime' non include alcuna informazione sul fuso orario. Hai bisogno di 'DateTimeOffset' per questo documento –
dichiara chiaramente questo * Prima di confrontare gli oggetti DateTime, assicurati che gli oggetti rappresentino le volte nello stesso fuso orario. Puoi farlo confrontando i valori delle loro proprietà Kind. * –
'NodaTime' per il salvataggio :) – tchrikch