2011-07-01 9 views
13

誰でもSystem.DateTimeとSystem.DateTimeOffsetの違いをC#.NETで説明できますか?異なるタイムゾーンのユーザーとウェブアプリケーションを構築するのに最適なのはどちらですか?System.DateTimeとSystem.DateTimeOffsetの相違点

+0

重複するhttp://stackoverflow.com/questions/264617/when-would-you-prefer-datetime-over-datetimeoffset – V4Vendetta

答えて

9

DateTime値は特定の日付と時刻を定義し、Kindプロパティを含み、その日付と時刻が属するタイムゾーンに関する限定情報を提供します。

DateTimeOffset構造体は、日付と時刻の値と、その値がUTCとどのくらい異なるかを示すオフセットを表します。したがって、この値は常に単一の時点を明確に識別します。

DateTimeOffset値の使用がDateTime値の使用よりも一般的なため、DateTimeOffsetはアプリケーション開発のデフォルトの日付と時刻タイプとみなす必要があります。

がで、コード例を詳細情報を参照してください:ポイントのカップルがここにあります http://msdn.microsoft.com/en-us/library/bb384267.aspx

+1

http://msdn.microsoft.com/en-us/library/system.datetime .kind.aspx –

2

日時情報は、データベースにUTC形式で保存する必要があります。

http://www.4guysfromrolla.com/articles/081507-1.aspx

WebアプリケーションでDateTime情報を使用する場合は、LocalTimeに変換する必要があります。

DateTime.UtcNow.ToLocalTime(); 

はWebサーバーの観点から現地時間に変換します。

あなたが複数の国の顧客にサービスを提供する一つの場所でのWebServerを、持っている場合、あなたはクライアント自体にJavaScriptでこの操作を実行する必要があります。

myUTCDate.toLocaleTimeString(); 

http://www.java2s.com/Code/JavaScript/Date-Time/ConvertDatetoLocaleString.htm

3

のDateTimeOffsetは日時を表しUTCの日時です。

だから

DateTimeOffset dtoNow = DateTimeOffset.Now; 

はdtoNowが一つDateTimeOffset.Nowに初期化し、他方はDateTimeOffset.UTCNowに初期化したにもかかわらずdtoUTCNowに等しくなる。ここで

DateTimeOffset dtoUTCNow = DateTimeOffset.UTCNow; 

と同じです。

したがって、DatetimeOffsetは、差またはオフセットw.r.t UTCを保存するのに適しています。

詳細はMSDNを参照してください。

関連する問題