C # DateTime à l'heure UTC sans changer l'heure


124

Comment convertir une date / heure préexistante en heure UTC sans changer l'heure réelle.

Exemple:

DateTime dateTime = GetSomeDateTime(); // dateTime here is 3pm
dateTime.ToUtcDateTime() // datetime should still be 3pm

Vous êtes en PST ? Comment obtenez-vous de la PSTvaleur?
Kiquenet

Réponses:


207
6/1/2011 4:08:40 PM Local
6/1/2011 4:08:40 PM Utc

de

DateTime dt = DateTime.Now;            
Console.WriteLine("{0} {1}", dt, dt.Kind);
DateTime ut = DateTime.SpecifyKind(dt, DateTimeKind.Utc);
Console.WriteLine("{0} {1}", ut, ut.Kind);

50

Utilisez la DateTime.SpecifyKindméthode statique.

Crée un nouvel objet DateTime qui a le même nombre de graduations que le DateTime spécifié, mais qui est désigné comme heure locale, temps universel coordonné (UTC) ou ni l'un ni l'autre, comme indiqué par la valeur DateTimeKind spécifiée.

Exemple:

DateTime dateTime = DateTime.Now;
DateTime other = DateTime.SpecifyKind(dateTime, DateTimeKind.Utc);

Console.WriteLine(dateTime + " " + dateTime.Kind); // 6/1/2011 4:14:54 PM Local
Console.WriteLine(other + " " + other.Kind);       // 6/1/2011 4:14:54 PM Utc

18

Vous pouvez utiliser le constructeur surchargé de DateTime:

DateTime utcDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second, DateTimeKind.Utc);

0

Vous pouvez également le faire de cette façon:

DateTime utcDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime();

Cela peut ne pas fonctionner comme prévu. Essayez ... new DateTime(dateTime.Year, dateTime.Month, dateTime.dateTimeay, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime().ToString() vs DateTime.SpecifyKind(dateTime, DateTimeKind.Utc).ToString() Vous verrez que vous obtenez des résultats différents.
Homer le

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.