首页 文章

android应用程序中服务器和客户端的时区差异

提问于
浏览
0

我创建了一个android客户端服务器应用程序,它涉及将datetime值存储到数据库中 . 服务器是mssql server . 服务器端编程在c#中完成 . 当前时间作为datetime2值存储在数据库中 . 服务器时区是美国山区标准时间 . 它与GMT的抵消是-07小时 . 那是服务器时间是GMT-7.00 . 我当前的时间是格林威治标准时间05.30 . 我开发了这个Android应用程序在GMT 05.30时区工作 . 所以我需要知道如何将服务器时间从GMT-07.00转换为GMT 05.30 .

我使用以下代码 Build 了服务器时间和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 回答

  • 1

    如果您使用的是SQL 2008,则将数据存储为DateTimeOffset .

    这应该会使不同时区的比较变得容易 . 然后你可以使用ToLocalTime进行比较

相关问题