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