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

posted @ 2021-05-14 17:02  nil  阅读(1773)  评论(0编辑  收藏  举报