0

これに対する答えが見つからないように見えるため、投稿します。SQL データベースに保存されている時間を、データベース内の正確な時間として Web サイトに表示したいと考えています。現在、これは当てはまりません。表示されている時刻は、閲覧しているコンピューターの現地時間に変換されています。保存される時間は予定の時間であるため、閲覧しているコンピューターがどこにいても、どのタイム ゾーンにいても、変換しても意味がありません。メソッド TimeZone と TimeZoneInfo を使用して時刻を現地時間に変換していると思いましたが、これは自動的に行われているようです。保存された正確な時間を自分のサイトに表示されるようにするにはどうすればよいですか?

SQL データベース フィールドの ETAStart および ETAEnd は、datetime として定義されます。

データベースへの更新は、コントローラーで次のように処理されます。

if (TryUpdateModel(model)) {

    System.DateTime ETAEnd = Convert.ToDateTime(model.ETAStart).AddHours(3);

    model.ETAEnd = ETAEnd;
    model.UpdatedBy = CurrentUser();

    model.UpdateDate = Convert.ToDateTime(DateTime.Now.ToString("U"));


    dc.SubmitChanges();


    return View(new GridModel<ManifestMasterModel> { Data = GetMMList(0) });

} else {
    return View();
}

事前に感謝し、応答してくれたすべての人に感謝します。

4

3 に答える 3

0

これで日時をUTCとして保存しようとしていますか?

model.UpdateDate = Convert.ToDateTime(DateTime.Now.ToString("U"));

変換を行わない場合は、次のように使用できます。

model.UpdateDate = DateTime.Now.ToUniversalTime();
于 2012-04-21T20:28:05.017 に答える
0

問題が何であるかを完全に理解しているかどうかはわかりませんが、カスタムのモデルバインダーを実装する必要があるように思えます。

以下のリソースが役立つ場合があります。

タイムゾーン戦略

Asp.net MVC のカスタム DateTime モデル バインダー

http://weblogs.asp.net/melvynharbour/archive/2008/11/21/mvc-modelbinder-and-localization.aspx

ただし、文字列を使用するだけのクイックフィックスの提案に問題はないと思います(あなたは自分自身に好意を持っていると思います)。クライアントと MVC に、日付を処理するタイム ゾーンの影響を無視させようとしているように思えます。おそらく、文字列アプローチを使用するよりもはるかに多くの作業が必要になり、クリーン度が大幅に低下します。データベースに DateTime を保持することもできます。ユーザーが送信した文字列値を取得し、適切なタイム ゾーンを使用してそれを解析して datetime にするだけです。

于 2012-04-22T00:42:28.823 に答える
0

サーバーに設定されているタイムゾーンを確認しましたか? 数日前に私に起こりましたが、ホスティングサーバーのタイムゾーンが異なることが判明しました。

確認方法は次のとおりです。

Response.Write(TimeZoneInfo.Local.DisplayName)

編集1:

Utc 時間を使用して、目的のタイムゾーンに変換できます。見る:

TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
于 2012-04-21T20:05:44.123 に答える