【发布时间】:2014-04-04 18:35:43
【问题描述】:
我创建了一个 android 客户端服务器应用程序,其中涉及将日期时间值存储到数据库中。服务器是 mssql 服务器。服务器端编程是用 c# 完成的。当前时间作为 datetime2 值存储在数据库中。服务器时区是美国山区标准时间。它与 GMT 的偏移量是 -07 小时。也就是说,服务器时间是 GMT-7.00。我当前的当地时间是 GMT+05.30。我开发了这个 android 应用程序以在 GMT+05.30 时区工作。所以我需要知道如何将服务器时间从 GMT-07.00 转换为 GMT+05.30。
我使用以下代码确定了服务器时间和 GMT。
TimeZone zone = TimeZone.CurrentTimeZone;
DateTime server=DateTime.Now;
DateTime universal=zone.ToUniversalTime(DateTime.Now); //GMT TIME
//I have found that My server offset from GMT is -07.00 using the below code
TimeSpan offset = zone.GetUtcOffset(DateTime.Now);
当我在我的服务器数据库中输入以下值时,它会以这种格式输入到表中。
Here my local time is: 2014-02-03 20:25:08.0000000
my server time at that moment is: 2014-03-03 07:55:28.0000000
the utc time at that moment is: 2014-03-03 14:55:28.0000000
所以我的服务器时间和本地时间总共有大约 12 小时 30 分钟的时差。如果该位置的服务器因任何原因出现故障,则该服务器将从另一个具有不同时区和不同偏移量的位置运行。因此,服务器时间和本地时间之间的差异有时会发生变化。这会给我的应用程序带来问题,因为我的值有时会出错。有什么方法可以在我需要时找出偏移量并计算我的服务器时间并使其与本地时间相同??
【问题讨论】:
-
1.永远不要使用
TimeZone。它已被弃用,请改用TimeZoneInfo。 2.Never useDateTime.Nowin a web app。 3. 如果您需要UTC时间,请使用DateTime.UtcNow。 4. 我在您的代码中没有看到您与客户端代码交互的任何地方,但您似乎想神奇地调整客户端时区? 5. 你在这里真正问什么?您编写它的方式令人困惑。
标签: c# sql-server timezone timespan timezone-offset