Convert DateTime from UTC to user location timezone
在db中我以UTC格式保存DateTime,如下所示:
1 | CreatedDate = DateTime.UtcNow; |
我还为每个用户以这种格式保存时区"+0200"," - 0300"," - 0430"
现在我想按日期过滤结果
SQL:
如何从时区列添加值到选定的dateTime?
你可以做类似的事情
1 2 3 | DateTime utcDateTime = DateTime.UtcNow; TimeSpan offSet = TimeSpan.Parse("+01:00:00"); DateTime checkDate = utcDateTime + offSet; |
然后将
像这样的东西:
1 | storedDate.AddHours(double.Parse(timezoneOffset)/100).ToString(); |
未经测试!
编辑
或者使用这样的东西:(再次,未经测试)
1 2 3 | TimeZoneInfo[] tz = TimeZoneInfo.GetSystemTimeZones().ToArray(); string t1 = tz.First(t => t.BaseUtcOffset == TimeSpan.FromHours(Math.Round((double.Parse(stored) / 100), 1))).Id; DateTime time= TimeZoneInfo.ConvertTimeBySystemTimeZoneId(storedDate, t1); |
根据您使用的语言,您可以从客户端应用程序获取此信息,例如 对于JavaScript。
1 |
在JavaScript中获取客户端的时区
这样您就不需要将其存储在DB中。
要为您的示例添加时间,请使用解析和DATEADD http://msdn.microsoft.com/en-gb/library/ms186819.aspx