需求:為了解決誇時區的時間問題,將時間固定設置為了 (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