C#.NET の System.DateTime と System.DateTimeOffset の違いを説明できる人はいますか? 異なるタイム ゾーンのユーザーを使用して Web アプリを構築するのに最も適しているのはどれですか?
3 に答える
DateTime 値は、特定の日付と時刻を定義します。これには、その日付と時刻が属するタイム ゾーンに関する限定的な情報を提供する Kind プロパティが含まれています。
DateTimeOffset 構造体は、日付と時刻の値を、その値が UTC とどの程度異なるかを示すオフセットと共に表します。したがって、値は常に単一の時点を明確に識別します。
DateTimeOffset 値の使用は、DateTime 値の使用よりもはるかに一般的であるため、DateTimeOffset は、アプリケーション開発のデフォルトの日付と時刻の型と見なす必要があります。
詳細情報、コード例を参照してください: http://msdn.microsoft.com/en-us/library/bb384267.aspx
DateTimeOffset は、日時を UTC 日時として表します。
そう
DateTimeOffset dtoNow = DateTimeOffset.Now;
と同じです
DateTimeOffset dtoUTCNow = DateTimeOffset.UTCNow;
ここで、一方が DateTimeOffset.Now に初期化され、もう一方が DateTimeOffset.UTCNow に初期化されたとしても、dtoNow は dtoUTCNow と等しくなります。
そのため、DatetimeOffset は、差分またはオフセット wrt UTC を格納するのに適しています。
詳細については、MSDNを参照してください。
ここにはいくつかのポイントがあります。
DateTime 情報は、データベースに UTC 形式で保存する必要があります。
http://www.4guysfromrolla.com/articles/081507-1.aspx
Web アプリケーションで DateTime 情報を使用する場合は、LocalTime に変換する必要があります。
DateTime.UtcNow.ToLocalTime();
Web サーバーの観点からローカル時間に変換します。
1 つの場所に WebServer があり、複数の国のクライアントにサービスを提供している場合、クライアント自体で JavaScript でこの操作を実行する必要があります。
myUTCDate.toLocaleTimeString();
http://www.java2s.com/Code/JavaScript/Date-Time/ConvertDatetoLocaleString.htm