1

UTC で日時を保存する際に問題に直面しています。その後、ユーザーからの入力として日時を取得して、その日時の UTC 値をデータベースに保存したいと考えています。ユーザーから日時入力値を取得するために、1 つのテキスト ボックス (正確な日付を取得するため) と 1 つのドロップダウンリスト (その日付の時間を取得するため) を使用しています。以下は、両方のコントロール値を結合した後、ユーザーから正確な入力日時を取得するコードです。like: 日付として 25/12/2011、両方の値を結合した後の時間として 10 時間 日付の値は 25/12/2011 10:00 AM です。彼の計算では、以下のコードを使用しています。

      string[] dateArray = HdnDPC_date1.Value.Split('/');
            string dtt = dateArray[1] + "/" + dateArray[0] + "/" + dateArray[2];
            var fdate = Convert.ToDateTime(dtt);

           DateTime dadate = new DateTime(Convert.ToInt32(dateArray[2]), Convert.ToInt32(dateArray[1]), Convert.ToInt32(dateArray[0]));
            dadate = Convert.ToDateTime(fdate).AddHours(deadlineHr);

以下のコードは、日時の値を UTC に変換するために使用されます

            DateTime DeadLine = TimeZoneInfo.ConvertTimeToUtc(dadate);

しかし、コードはタイムゾーンに従って入力日時を変換していません。常に「中央タイムゾーン、米国およびカナダ」 に従って変換されますが、ユーザーのタイムゾーンに従ってその日時を変換したいです。

この問題が発生した理由を特定するのを手伝ってください。

4

3 に答える 3

4

ToUniversalTime機能を試してみることができます

DateTime univDateTime = DateTime.Now.ToUniversalTime();

詳しくはToUniveralTime こちら

于 2011-12-25T12:05:15.003 に答える
2

ユーザーのタイムゾーンを指定する必要があります。例えば:

TimeZoneInfo.ConvertTimeToUtc(dadate, 
            TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));
于 2011-12-25T12:50:44.513 に答える
0

次のように、スレッドの現在のカルチャをユーザーのカルチャに設定します。

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage); 
Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);

http://msdn.microsoft.com/en-us/library/bz9tc508.aspxを参照してください。

于 2011-12-25T12:09:27.233 に答える