C# 日期字符串和UTC時間的轉換

需求:爲了解決誇時區的時間問題,將時間固定設置爲了 (GMT-05:00) Eastern Time (US and Canada)
但是在瀏覽器端還需要進行時間的對比,但是js對時間的操作太弱了,沒有考慮使用第三方的js庫,所以用了以下方案,
返回兩個時間,一個是EST時區的時間格式用來顯示,一個是帶時區的UTC時間,因爲發現帶時區的時間字符串使用new Date()會直接轉換爲本地時間。

            var esternTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");

                    detail.StartTime = TimeZoneInfo.ConvertTimeFromUtc(offsetStartTime.UtcDateTime, esternTimeZone);
                    detail.StartTimeUTC = TimeZoneInfo.ConvertTimeFromUtc(offsetStartTime.UtcDateTime, TimeZoneInfo.Utc);
                    detail.EndTime = TimeZoneInfo.ConvertTimeFromUtc(offsetEndTime.UtcDateTime, esternTimeZone);
                    detail.EndTimeUTC = TimeZoneInfo.ConvertTimeFromUtc(offsetEndTime.UtcDateTime, TimeZoneInfo.Utc);

可以用以下代碼獲取 TimeZoneID

IList<TimeZoneInfo> lst = TimeZoneInfo.GetSystemTimeZones();

客戶端就使用StartTimeUTC來進行時間判斷

var StartTimeUTC = "2021-05-31T09:00:00+00:00";
var nowDate = new Date(); //Fri May 14 2021 18:19:57 GMT+0800 (China Standard Time)
var startTime = new Date(StartTimeUTC); //Mon May 31 2021 17:00:00 GMT+0800 (China Standard Time)
if (startTime < nowDate) {
  // do something
}

參考:how to convert string to DateTime as UTC as simple as that

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章