有两个客户端具有相同的窗口应用程序。一个在印度,另一个在比利时。
Sql服务器和Web服务应用程序在比利时托管。在sql中我存储 UTC日期时间。
现在问题是这两个客户的时差。
我希望以历史形式显示UTC时间,这意味着存储在数据库中的内容我必须将该数据绑定到gird。没有任何额外的代码,因为我想绑定UTC日期时间。事件然后我得到这两个客户的时差。
蓝色标题屏幕是印度客户端,另一个是比利时客户端。在比利时,时间与数据库完全相同,但印度不同。我在配置中遗漏了什么或者什么?
答案 0 :(得分:0)
投掷System.DateTime
并使用Noda Time!
Getting Started with Noda Time
System.DateTime
在不可预测的时刻使用系统文化和时区,其中Noda Time无任何默认值。需要做一些工作才能理解,但你永远不会回头。
在客户端上使用Noda时间,并将所有值以UTC格式存储在数据库中。您可能还希望存储输入日期时间的原始时区。
答案 1 :(得分:0)
您必须转换标准UTC中的两个时区并保存。使用dateadd()函数来操作datetime。比如
declare @IST_date datetime
declare @BE_date datetime
declare @UTC_date datetime
--Indian standard time is (GMT + 5:30 hrs)
-- Belgium standard time is ( GMT + 1 hour)
select @UTC_date = DATEADD(hh,5.30, @IST_date)
select @UTC_date = DATEADD(hh,1, @BE_date)
答案 2 :(得分:0)
为什么不简单地转换显示的值?
DateTime MyDate = Data["ChangedDate"];
DateTime MyDateUTC = MyDate.ToUniversalTime();
tadaaaaa