读取不同时区的DateTime对象

时间:2010-09-17 11:58:54

标签: c# datetime timezone

我有以下情况:

美国:数据库&应用服务器

欧洲:客户

服务器从数据库中读取日期时间(例如12:00)对象并将其发送到欧洲的客户端。问题是,客户端在客户端的时区(例如18:00)显示此日期时间,但我们需要数据库中的时间,与服务器的时区无关。在客户端,我们不知道该值的时区。

那么我们怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

你的标签会说明答案。

使用TimeZone类。

http://msdn.microsoft.com/en-us/library/system.timezone.touniversaltime.aspx

还:Creating a DateTime in a specific Time Zone in c# fx 3.5

所以在你的数据库中,时间应该是UTC。从那里你可以做任何你想做的事。

答案 1 :(得分:1)

你不能简单地使用DateTime.ToUniversalTime()吗?

http://msdn.microsoft.com/en-us/library/system.datetime.touniversaltime.aspx

或者,如果您不想要UTC,您可以找到服务器的时区并执行以下操作:

DateTime dt;
TimeZoneInfo timezone_EST =
    TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");    
DateTime dt_EST = TimeZoneInfo.ConvertTime(dt, timezone_EST);

答案 2 :(得分:0)

如果您要在SQL 2008中存储DateTime数据,请查看新的datetimeoffset类型,它将存储时区信息以及日期和时间本身