【发布时间】:2018-11-03 14:01:38
【问题描述】:
我有一个逻辑可以在管理员提到的特定时间段内在用户屏幕上显示一条消息。
var time = DateTime.SpecifyKind(System.DateTime.Now, DateTimeKind.Unspecified);
var date= TimeZoneInfo.ConvertTimeToUtc(time, TimeZoneInfo.FindSystemTimeZoneById(System.TimeZoneInfo.Local.Id));
StringBuilder dispalyMessage = new StringBuilder("<marquee scrolldelay='90' behavior='scroll' scrollamount='1' direction='left'><b><ul>");
var bannerMessageIds = new HashSet<int>(db.CompanyBanners.Where(c => c.CompanyId == PortalUser.Current.CurrentCompanyId).Select(x => x.BannerMessageId));
List<BannerMessage> bannerMessages = db.BannerMessages.Where(p => bannerMessageIds.Contains(p.Id) && (p.StartDate < date && p.EndDate > date) ).ToList();
这里的问题是我正在转换时间以使用服务器时区进行检查。
有没有办法将客户端时区从 javascript 传递到 c# 并根据该时区转换日期。
我的意思是这样的
var date= TimeZoneInfo.ConvertTimeToUtc(time, TimeZoneInfo.FindSystemTimeZoneById("time zone id passed from client javascript"));
【问题讨论】:
-
您的数据库应该以 UTC 格式存储时间,因此您应该与 DateTime.UtcNow 进行比较,而不需要任何时区转换。