System.TimeZoneクラスだけでなく、DateTime.ToString()メソッドの多くの用途も認識しています。私が見つけられなかったのは、日時情報に加えて、3 文字のタイム ゾーンの略語を含む文字列に DateTime を変換する方法です (実際、相対時間に対する StackOverflow のツールチップとほぼ同じ方法です)。時間表示は動作します)。
誰もが理解しやすく、利用しやすい例にするために、StackOverflow の例を続けましょう。相対時間で表示されるツールチップを見ると、完全な日付、12 時間形式の秒を含む時間、AM/PM の指定、および 3 文字のタイム ゾーンの略語 (この場合は、Coordinated世界時)。組み込みメソッドを使用して GMT または UTC を簡単に取得できることはわかっていますが、本当に必要なのは、ローカル (この場合は Web サーバー) の時刻です。
私たちの Web サーバーが Windows Server 2k3 を実行していて、タイム ゾーンが CST に設定されている場合 (または、夏時間が元に戻るまでは CDT でしょうか?)、ASP.NET Web アプリでそのタイム ゾーンに相対的な DateTimes を表示したいと考えています。最後に「CST」を表示するようにフォーマットされています。これを簡単にハードコーディングできることはわかっていますが、堅牢性のために、コードの OS 環境設定を実行しているサーバーに基づくソリューションを本当に好んでいます。
現在、次のコードを使用して、タイムゾーンの略語以外はすべて持っています。
myDateTime.ToString("MM/dd/yyyy hh:mm:ss tt")
どちらが表示されますか:
2008/10/07 03:40:31 午後
私が望むのは(そしてそれは大したことではありません、約束します!)それが言うことだけです:
2008 年 10 月 7 日 03:40:31 午後 CDT
System.TimeZone.CurrentTimeZone を使用して「中央夏時間」を正しく表示できますが、簡潔にするために少し長すぎます。空白や大文字以外の文字を削除する文字列操作ルーチンの作成に行き詰まっていますか? それはうまくいくかもしれませんが、それは私には信じられないほどハックのようです...
ここをグーグルで調べても、私の特定の質問に当てはまるものは何もありませんでした。