0

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

蓝色标题屏幕是印度客户,另一个是比利时客户。在比利时,时间与数据库中的显示完全相同,但印度的时间有所不同。我是否缺少配置中的任何内容或什么?

4

3 回答 3

0

为什么不简单地转换显示值?

DateTime MyDate = Data["ChangedDate"];
DateTime MyDateUTC = MyDate.ToUniversalTime();

太棒了

于 2013-10-15T11:54:24.240 回答
0

抛弃System.DateTime并使用野田时间

野田时间入门

System.DateTime在不可预知的时刻使用系统文化和时区,Noda Time 在没有任何默认值的情况下工作。需要一些工作才能理解,但你永远不会回头。

在客户端使用 Noda 时间,并将所有 UTC 值存储在数据库中。您可能还希望存储输入日期时间的原始时区。

于 2013-10-15T08:59:11.230 回答
0

您必须将两个时区都转换为标准 UTC 并保存。使用 dateadd() 函数来操作日期时间。如

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)
于 2013-10-15T09:26:34.133 回答