In meiner aktuellen Aufgabe, ich bin etwas Mismatch in Date-Time-Berechnung konfrontiert. Es ist wie die Verwaltung von Benutzerdaten. Der Benutzer hat Aktivierungsdatum (TT/MM/JJJJ) und Ablaufdatum (TT/MM/JJJJ). Von der Benutzeroberfläche werden die Datumsdetails gesammelt und in der SQL DB gespeichert. Beispiel: Wenn ein Benutzer XYZ heute (19. Mai 2016) erstellt hat, hat der Benutzer XYZ das Aktivierungsdatum als 19-05-2016 und das Ablaufdatum wird als 25-05-2016 festgelegt (basierend auf dem Wunsch des Benutzers).DateTime Fehler mit TimeZoneInfo.ConvertTimeToUtc()
Benutzername: XYZ
Aktivierungsdatum: 19-05-2016
Gültig bis: 25-05-2016
Also wenn man versucht, die Details in der Website anzuzeigen Die Benutzerdaten werden aus der SQL-Datenbank abgerufen, und die Datumszeit wird in die UTC-Zeitzone konvertiert. Anschließend werden Details zur Site für die Benutzeransicht übergeben. In DB ist das Datum so wie es ist, aber während es mit TimeZoneInfo.ConvertTimeToUtc() konvertiert wird, wird der Datumswert um 1 reduziert (wenn das Datum 19-05-2016 ist, wird es als 28-05-2016 konvertiert)
select username, activationdate, expirydate from UserDetails where username = 'XYZ'
Ergebnis der Abfrage ist,
username | activationdate | expirydate
------------------------------------------------------------
XYZ | 2016-05-19 00:00:00.000 | 2016-05-25 00:00:00.000
nach UTC Umwandlung
ExpiryDate = TimeZoneInfo.ConvertTimeToUtc((DateTime)user.expirydate);
ActivationDate = TimeZoneInfo.ConvertTimeToUtc((DateTime)user.activationdate);
// after execution of these statements
// ExpiryDate = 2016-05-18 00:00:00.000
// ActivationDate = 2016-05-24 00:00:00.000
So nach ConvertTimeToUtc() die tatsächliche activationdate 2016.05.19 00: 00: 00.000 umgewandelt als 2016-05-18 00: 00: 0 0.000 ans das Ablaufdatum 2016-05-25 00: 00: 00.000 wird konvertiert als 2016-05-24 00: 00: 00.000. Ich habe einen Link verwiesen, der besagt, dass TimeZoneInfo.ConvertTimeToUtc() Convert the specified date and time to Coordinated Universal Time (UTC) ist. Ich habe auch versucht Online-Konvertierung von aktuellen Datum und Uhrzeit in UTC in google, konvertiert es die Zeit in UTC, aber ich sehe nicht so viel Unterschied im Datum. Meine Verwirrung ist, warum diese UTC-Konvertierung den Datumswert um ein vollständiges Datum reduziert? ODER wo ist das Ding falsch?
Jeder Vorschlag dazu wäre hilfreich.
Sie speichern in UTC die Zeitzonenzeit des Benutzers. Wenn Sie die Zeit zurück auf den Client ziehen konvertieren zurück von UTC zu den Benutzern Zeitzone info? –