私の現在の仕事では、日付の時間の計算にいくつかの不一致があります。これはユーザーの詳細管理と似ています。ユーザーは有効化日付(dd/mm/yyyy)と有効期限(dd/mm/yyyy)を持ちます。 UIから日付の詳細が収集され、SQL DBに保存されます。たとえば、ユーザーXYZが今日作成された場合(2016年5月19日)、ユーザーXYZの有効期限は19-05-2016、有効期限は25-05-2016(ユーザーの希望に基づく)に設定されます。DateTime Error with TimeZoneInfo.ConvertTimeToUtc()
ユーザー名:XYZ
アクティベーション日:19-05-2016
有効期限:だから25-05-2016
サイトで詳細を表示しようとしていますユーザーの詳細がSQL DBから取得され、日付時刻がUTCタイムゾーンに変換された後、詳細がユーザービュー用のサイトに渡されます。 DBでは、日付はそのままですが、TimeZoneInfo.ConvertTimeToUtc()を使用して変換すると、日付の値が1減らされます(日付が19-05-2016の場合は28-05-2016として変換されます)
クエリのselect username, activationdate, expirydate from UserDetails where username = 'XYZ'
結果は、ConvertTimeToUtc(後そこでUTC、
ExpiryDate = TimeZoneInfo.ConvertTimeToUtc((DateTime)user.expirydate);
ActivationDate = TimeZoneInfo.ConvertTimeToUtc((DateTime)user.activationdate);
// after execution of these statements
// ExpiryDate = 2016-05-18 00:00:00.000
// ActivationDate = 2016-05-24 00:00:00.000
に変換した後
username | activationdate | expirydate
------------------------------------------------------------
XYZ | 2016-05-19 00:00:00.000 | 2016-05-25 00:00:00.000
ある)実際のactivationdate 2016年5月19日00:00:00.000変換2016-05-18 00:00:0 0.000 ansの有効期限2016-05-25 00:00:00.000は、2016-05-24 00:00:00.000として変換されます。私は、TimeZoneInfo.ConvertTimeToUtc()がConvert the specified date and time to Coordinated Universal Time (UTC)になるというリンクを参照しました。私はまた、現在の日付と時刻をUTCにgoogleでオンライン変換しようとしましたが、時刻がUTCに変換されますが、この日付の違いはほとんど見られません。私の混乱は、このUTC変換が日付を1つの完全な日付で減らしている理由です。または何かが間違っていますか?
これに関する任意の提案は役に立ちます。
ユーザーは、ユーザーのタイムゾーン時間に相当するUTCで保存しています。時間をクライアントに戻すと、UTCからユーザーのタイムゾーン情報に変換されますか? –