Je suis conscient de la System.TimeZone ainsi que les nombreuses utilisations de la classe DateTime.ToString() méthode. Ce que je n'ai pas pu trouver, c'est un moyen de convertir une DateTime en une chaîne de caractères qui, en plus des informations sur l'heure et la date, contient l'abréviation à trois lettres du fuseau horaire (en fait, de la même manière que les infobulles de StackOverflow pour l'affichage de l'heure relative).
Afin de rendre un exemple facile à suivre et à consommer pour tous, reprenons l'exemple de StackOverflow. Si vous regardez l'infobulle qui s'affiche sur les heures relatives, elle indique la date complète, l'heure, y compris les secondes, au format 12 heures, une désignation AM/PM, puis l'abréviation du fuseau horaire à trois lettres (dans leur cas, le temps universel coordonné). Je réalise que je pourrais facilement obtenir l'heure GMT ou UTC en utilisant les méthodes intégrées, mais ce que je veux vraiment, c'est l'heure telle qu'elle est localement - dans ce cas, sur un serveur web.
Si notre serveur web fonctionne sous Windows Server 2k3 et que son fuseau horaire est défini sur CST (ou, jusqu'à ce que l'heure d'été ), j'aimerais que notre application Web ASP.NET affiche les dates et heures relatives à ce fuseau horaire et qu'elle soit formatée pour afficher un "CST" à la fin. Je réalise que je pourrais facilement coder cela en dur, mais dans l'intérêt de la robustesse, je préférerais vraiment une solution basée sur les paramètres d'environnement du système d'exploitation du serveur qui exécute le code.
Actuellement, j'ai tout sauf l'abréviation du fuseau horaire en utilisant le code suivant :
myDateTime.ToString("MM/dd/yyyy hh:mm:ss tt")
Qui affiche :
10/07/2008 03:40:31 PM
Tout ce que je veux (et ce n'est pas grand-chose, promis !) c'est qu'il dise :
10/07/2008 03:40:31 PM CDT
Je peux utiliser System.TimeZone.CurrentTimeZone et l'utiliser pour afficher correctement "Central Daylight Time" mais... c'est un peu trop long par souci de concision. Suis-je alors obligé d'écrire une routine de manipulation de chaîne pour supprimer les espaces et les lettres non majuscules ? Bien que cela puisse fonctionner, cela me semble incroyablement compliqué...
Sur Google : et la recherche sur ce site n'a rien donné pour répondre à ma question.