两个不同国家的时差问题

时间:2013-10-15 08:57:36

标签: sql winforms web-services

有两个客户端具有相同的窗口应用程序。一个在印度,另一个在比利时。
Sql服务器和Web服务应用程序在比利时托管。在sql中我存储 UTC日期时间。 现在问题是这两个客户的时差。
我希望以历史形式显示UTC时间,这意味着存储在数据库中的内容我必须将该数据绑定到gird。没有任何额外的代码,因为我想绑定UTC日期时间。事件然后我得到这两个客户的时差。 enter image description here

蓝色标题屏幕是印度客户端,另一个是比利时客户端。在比利时,时间与数据库完全相同,但印度不同。我在配置中遗漏了什么或者什么?

3 个答案:

答案 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