Si je cours un extrait comme:Est-ce que UtcNow et maintenant le même datetime? Savent-ils qu'ils sont différents?
bool areTheyTheSame = DateTime.UtcNow == DateTime.Now
que vais-je obtenir? Le DateTime renvoyé connaît-il son fuseau horaire de sorte que je peux comparer?
Mon problème spécifique est que j'essaye de construire une API de type cache. Si cela prend une DateTime AbsoluteExpiration, dois-je faire en sorte que les utilisateurs de mon API sachent si je dois me donner une heure UTC ou un fuseau horaire?
[Modifier] Cette question SO est extrêmement pertinente à ma question ainsi: Cache.Add absolute expiration - UTC based or not?
[Modifier] Juste pour clarifier pour les futurs lecteurs, le DateTimeKind est ce qui est différent. Les DateTimeKind Undefined sont souvent un problème, ce qui est ce que vous obtenez lorsque vous en extrayez un dans une base de données, par exemple. Réglez le DateTimeKind dans le constructeur DateTime ...
[Modifier] JonSkeet a écrit un message joli blog condamnant ce comportement et d'offrir une solution: http://noda-time.blogspot.co.uk/2011/08/what-wrong-with-datetime-anyway.html
Je n'ai pas essayé, mais surtout parce que je suis surpris que la question n'a pas été sur le SO déjà et pensé que ce serait un utile pour les personnes. Et peut-être une touche de paresse, mais je jure, surtout de bonnes intentions! ;) –
Le test clé que je veux voir est peut-être, est le résultat de "Console.WriteLine (utcNow.ToUniversalTime() == utcNow);" ... –
+1. En outre, il existe un 'DateTimeKind' différent. Il y a un 'ToLocalTime()' pour l'autre direction. Soyez prudent avec 'DateTimeKind.Undefined', ces temps sont toujours convertis (' ToUniversalTime' les traite en heure locale, 'ToLocalTime' en UTC). –