亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在ASP.NET中使用時區?

如何在ASP.NET中使用時區?

MM們 2019-11-28 12:49:01
我正在研究“在線提醒系統”項目(ASP.NET 2.0(C#)/ SQL Server 2005)因為這是一個提醒服務,它將在特定日期將郵件發送給用戶。但是問題在于用戶不是來自特定國家,而是來自世界各地和不同時區?,F在,當我注冊時,我要求用戶的時區與Windows在安裝時要求我們的時區相同。但是我沒有得到如果用戶選擇(+5.30)或某個時區,那么如何在我的asp.net應用程序中處理該時區。如何根據時區工作。并請提出在此應用程序中是否有更好的方法來處理時區?謝謝
查看完整描述

3 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

到目前為止,所有答案的問題在于它們沒有考慮Prashant試圖實現的目標。如果夏令時更改前一天其系統的用戶的偏移量為+12并為第二天設置了提醒,則本應觸發該提醒的用戶的偏移量將改為+13。

這就是為什么您只能將當前偏移量用于當前發生的事情。盡管我與其他所有人都同意,但服務器端所有時間(除了可能僅用于顯示的時間)都應存儲在UTC中。


查看完整回答
反對 回復 2019-11-28
?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

第一件事是確保數據位于哪個時區。我建議確保將您存儲的任何DateTime存儲在UTC時間中(使用DateTime.ToUniversalTime()來保存它)。


當要為用戶存儲提醒時,您將需要當前的UTC時間,添加或刪除用戶的時區差,然后將新時間轉換回UTC。這就是您要存儲在數據庫中的內容。


然后,當您要檢查要發送的提醒時,只需根據UTC時間在數據庫中查找要立即發送的提醒;本質上是獲得所有時間戳都在之前的提醒DateTime.Now.ToUniversalTime()。


更新一些實現細節:您可以從TimeZoneInfo.GetSystemTimeZones()方法中獲取時區列表;您可以使用這些時間顯示用戶的時區列表。如果Id從選定的時區存儲屬性,則可以從中創建一個TimeZoneInfo類實例,并為給定的本地日期/時間值計算UTC時間:


TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("<the time zone id>");

// May 7, 08:04:00

DateTime userDateTime = new DateTime(2009, 5, 7, 8, 4, 0);

DateTime utcDateTime = userDateTime.Subtract(tzi.BaseUtcOffset);


查看完整回答
反對 回復 2019-11-28
  • 3 回答
  • 0 關注
  • 821 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號