我创建了一个android客户端服务器应用程序,它涉及将日期时间值存储到数据库中。服务器是mssql服务器。服务器端编程在c#中完成。当前时间作为datetime2值存储在数据库中。服务器时区是美国山地标准时间。它与GMT的抵消是-07小时。那是服务器时间是GMT-7.00。我当前的时间是格林尼治标准时间+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分钟的时差。如果此位置的服务器因任何原因而关闭,则服务器将从具有不同时区和不同偏移的另一个位置运行。因此,服务器时间和本地时间之间的差异有时会发生变化。这会导致我的应用程序出现问题,因为我的值有时会出错。有什么办法可以在需要时找出偏移量并计算服务器的时间并使其与当地时间相同吗?
答案 0 :(得分:1)
如果您使用的是SQL 2008,则将数据存储为DateTimeOffset。
这应该会使不同时区的比较变得容易。然后,您可以使用ToLocalTime
进行比较