我有以下情况:
美国:数据库&应用服务器
欧洲:客户
服务器从数据库中读取日期时间(例如12:00)对象并将其发送到欧洲的客户端。问题是,客户端在客户端的时区(例如18:00)显示此日期时间,但我们需要数据库中的时间,与服务器的时区无关。在客户端,我们不知道该值的时区。
那么我们怎样才能做到这一点?
答案 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类型,它将存储时区信息以及日期和时间本身