我有如下设置:
public class Event
{
DateTime StartTime {get;set;}
DateTime EndTime {get;set;}
}
用户将发布东部标准时间事件。
public Save(DateTime start,DateTime end)
{
//I now save it to UTC time
TimeZoneInfo estZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var newEvent = new Event{StartTime = TimeZoneInfo.ConvertTimeToUtc(start, estZone
),EndTime=TimeZoneInfo.ConvertTimeToUtc(end, estZone)};
}
现在,如果我想将当前时间与存储在数据库中的时间进行比较在本地它可以正常工作,但我的UTC定时服务器无法正常工作。我要问的是,有没有更好的方法来节省时间或我保存它的方式还可以,但我需要一种更好的方法来解决它。
var now = DateTime.UtcNow;
//The following line will not return anything because the server time is UTC set
var GetStartedEvents = from e in Events where e.StartTime <= now select x
感谢您的帮助。
答案 0 :(得分:0)
如果不知道您尝试解决的实际问题,很难回答这个问题。但是,我可以告诉您,跨多个时区协调和同步日期可能会很快失控。我的通用建议是只进行一次比较并存储结果。我的意思是,为与事件相关的每个相关时间转换创建数据库存储可能是值得的。
将输入转换为UTC后, TimeZoneInfo.Local.GetUtcOffset(dateValue);
将为您提供当地时间翻译。你每次查看EST转换都是好的,因为根据夏令时,它会在一年中的不同时间为-5:00或-4:00。
我希望这个答案有所帮助。