Les autres réponses ici sont utiles, mais ils ne couvrent pas comment accéder Pacifique spécifiquement ici, vous allez:
public static DateTime GmtToPacific(DateTime dateTime)
{
return TimeZoneInfo.ConvertTimeFromUtc(dateTime,
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"));
}
Curieusement, bien que la "Pacific Standard Time" signifie quelque chose de différent de "Pacifique du Temps Quotidien," dans ce cas, il se réfère à l'heure du Pacifique en général. En fait, si vous utilisez FindSystemTimeZoneById
pour la récupérer, l'une des propriétés est un bool vous informant que le fuseau horaire est actuellement en heure d'été ou pas.
Vous pouvez voir plus généralisé des exemples de cela dans une bibliothèque, j'ai fini par jeter ensemble pour faire face DateTimes j'ai besoin dans des fuseaux horaires différents selon l'endroit où l'utilisateur demande à partir, etc:
https://github.com/b9chris/TimeZoneInfoLib.Net
Cela ne peut pas fonctionner en dehors de Windows (par exemple Mono sous Linux) depuis la liste des temps vient à partir de la base de Registre Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\
En dessous, vous trouverez les clés (les icônes de dossier dans l'Éditeur du Registre); les noms de ces clés sont ce que vous lui transmettez FindSystemTimeZoneById
. Sur Linux, vous devez utiliser un Linux standard de l'ensemble de définitions de fuseau horaire, je n'en ai pas suffisamment explorée.