J'ai deux objets DateTimeOffset, qui reviennent comme alors quand les enregistrer:Comparer deux DateTimeOffsets?
TIME 1 (db): 3/17/2016 2:25:37 PM +00:00
TIME 2 (client): 3/17/2016 2:09:19 PM -04:00
TIME 2 < TIME 1? False
Je ne veux pas encombrer ce avec le code, mais la comparaison est faite comme celui-ci (selon MSDN):
bool didUserLoginBeforeSysUpdate = clientLoginTime < lastSystemUpdateTimeFromDb;
Je pense que mon principal malentendu provient de la prise en compte ou non de l'ajustement du fuseau horaire (+00:00/-04:00
) dans la comparaison. Ma compréhension est que cela ne fait pas et compare les heures brutes selon ce SO post.
Cependant, la partie fuseau horaire est ignorée lors des comparaisons. En d'autres termes, chaque heure est convertie en heure GMT/UTC et ceux-ci sont comparés.
Alors, en bref, qu'est-ce que je fais de mal? Pourquoi TIME 2 n'apparaît-il pas plus tôt que TIME 1?
EDIT:
bool didUserLoginBeforeSysUpdate = clientLoginTime.ToUniversalTime() < lastSystemUpdateTimeFromDb.ToUniversalTime();
var didUserLoginBeforeSysUpdateComparison = clientLoginTime.CompareTo(lastSystemUpdateTimeFromDb);
brkptTIME 1 (db): 3/17/2016 2:25:37 PM +00:00
TIME 2 (client): 3/17/2016 2:09:19 PM -04:00
TIME 1 AFTER UTC CONVERSION(db): 3/17/2016 2:25:37 PM +00:00
TIME 2 AFTER UTC CONVERSION(client): 3/17/2016 6:09:19 PM +00:00
TIME 2(UTC) < TIME 1(UTC) ? False
COMPARISON RESULT - is TIME 2 earlier than TIME 1?: 1 Key: Earlier = -1, Same = 0, Later = 1
On dirait que je suis mal compris comment gagner UTC. Je pensais que 3/17/2016 2:09:19 PM -04:00
signifiait que "l'heure universelle est 14:09:19 pm, et l'heure locale où il a été stocké est 4 heures plus tôt.Par ailleurs, j'ai besoin de poser une question différente, merci pour l'aide les gars
Je pense que vous avez mal compris cette réponse, il dit qu'il convertit les DateTimes UTC, il ne se contente pas jeter le temps de réglage de la zone. L'ajustement se passe automatiquement –
C'est un message très confus - le "chaque date est convertie en GMT/UTC et ceux qui sont comparés" est correct, mais cela contredit le bit "la partie timezone est ignorée" ... –
TIME 2 est plus tard que TIME 1 et c'est aussi le résultat que vous obtenez en faisant la comparaison, par exemple 'false'. Alors qu'est-ce que tu fais mal? Rien, sauf que vous semblez croire que TIME 2 est avant le temps 1. –