2011-12-21 3 views
10

ASP.NET /アジア/ダッカまたはGMT + 6タイムゾーンのデフォルトのタイムゾーンを設定する必要があります。しかし、私は世界的にそれを変える方法を見つけることができません。これは、タイムゾーン情報を取得し、私はDateTimeオブジェクトが必要なたびに正しい時間を計算することによってこれを行うためのStackoverflowと残りのWeb上の多くの参照があります。asp.netアプリケーションのタイムゾーンを変更する方法

しかし、私を信じて、私はこのようにしたくありません。だから私にそのような提案はしないでください。タイムゾーンをアジア/ダッカ、またはGMT + 6に設定することをお勧めします。 (php.iniでphpで同様)私はDateTimeオブジェクトが必要なたびに、サーバーのタイムゾーンに関係なく、タイムゾーンでタイムを評価します。

これは可能ですか?可能であればどうすればいいですか? 解決方法を事前におねがいします:)

+4

は*なぜ*あなたは正しく物事を行うにはしたくありませんか? 'DateTime'は固有のタイムゾーンを持っていないことに注意してください。 (いくつかの点では非常に奇妙なタイプです。)いつものように(いつもとは限りません)、ユーザーに出かける時以外はすべてをUTCに保つべきです - なぜその共通のパターンに従わないのですか? –

+1

問題は、私は100 aspxページ以上のdatetimeオブジェクトを多く持っているため、それらをローカルタイムゾーンでレンダリングする必要があります。私は毎回UTCで守るのではない。しかし、私はすべてのページを変更することなくaspxページでローカルタイムゾーンでレンダリングするための解決策が必要です。 –

+1

「DateTime」レンダリングコードを置くための中心的な場所は、あなたが本当に必要としているように聞こえます。 100ページすべてを一度変更する必要があるかもしれませんが、レンダリングされた日時がどのように必要になるかをさらに変更するには、1か所で変更するだけで済みます。 –

答えて

8

残念ですが、.NETにタイムゾーンをグローバルに変更する方法はありません。

唯一の方法は、サーバーのタイムゾーンを変更するか、すべてのコードを書き換えることです。

システムタイムゾーンをまったく信頼しないでください(決してDateTime.Nowを使用しないでください)。

すべての日付をUtcの日付として扱い、ユーザーに表示するときは特定のゾーンに変換する必要があります。

ASP.NETアプリケーションでタイムゾーンを処理することができても、GETTIME機能など、SQL Serverにはまだタイムゾーンがあります。アプリケーションが完全にUTCで書かれている場合、SQLサーバー機能も同様に機能します。

TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"); 

だから...私は個人のTimeZoneInfoを作成します。

+0

グローバリゼーション設定では、DateTimeオブジェクトがどのように動作し、どの国が多くのタイムゾーンを持つので、どのタイムゾーンを使用するのかわからないという点で強調表示されるように変更されることはありません。 – davidsleeps

+1

提案をいただきありがとうございます。カルチャーゾーンに応じてフォーマットが変わるようです。しかし、時間オフセットはありません。私はすべての日付をutcとして扱うことに同意しますが、私が表示するたびにそれらを変換する方法が必要です。 私のアプリには、すでに何百ものDateTimeオブジェクトがあります。私は、これらのすべてを検索してutilメソッドで1つずつ置き換える以外の方法を探しています。 :s:s –

+0

私のアプリケーションで同じ解決策を探すのに大いに役立ちます。ほとんど同じ質問がhttp://stackoverflow.com/questions/14293858/how-to-set-default-time-zone-in-asp-net-applicationで尋ねられます。 – Pravin

2

あなたは私が命令に問題がある日

DateTime utcTime = DateTime.UtcNow; 
    TimeZoneInfo myZone = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"); 
    DateTime custDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, myZone); 
    Str.Append(custDateTime.ToString()); 
1

...タイムゾーンを変更して、取得することができます。

ここに私のコード

...

public static DateTime DateNow() 
     { 
      DateTime utcTime = DateTime.UtcNow; 
      TimeZoneInfo myZone = TimeZoneInfo.CreateCustomTimeZone("COLOMBIA", new TimeSpan(-5, 0, 0), "Colombia", "Colombia"); 
      DateTime custDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, myZone); 
      return custDateTime; 
     } 
関連する問題