将iPhone时间与服务器同步的最佳方式

时间:2011-07-18 12:54:28

标签: iphone cocoa-touch ios4 nsdate nsdateformatter

我有一个客户端服务器模型,其中服务器将发送一些具有日期参数的数据,iPhone将需要呈现它。服务器和iPhone将驻留在不同的时区。所以我需要在两者中同步时间。假设用户在“07/18/2011/04 / 45 / EDT”(服务器时间)完成了一些活动。从iPhone端我需要将此日期字符串转换为NSDate对象。

实现这一目标的最佳方法是什么。

谢谢

3 个答案:

答案 0 :(得分:3)

对于迟到的回复感到抱歉,只是在谷歌上寻找“NSDate Sync to Server”并到达此处。我遇到了同样的问题并编写了这个有用的小类别。

它可以返回同步到任何只有一个HTTP请求(每个会话)的Web服务器的NSDate对象。

https://github.com/freak4pc/NSDate-ServerDate

如果您有任何问题,请随时告诉我。

答案 1 :(得分:2)

如果您希望服务器和客户端上的时间相同,请与NTP(网络时间协议)同步。在http://code.google.com/p/ios-ntp/source/browse/trunk/ntpA.xcodeproj/project.pbxproj?spec=svn25&r=25

有一个obj-c ntp客户端

如上所述,远离存储/发送时间作为unix时间戳(自纪元UTC以来的秒数)并根据需要转换为时区。

答案 2 :(得分:1)

你绝对可以通过以下方式实现这一目标:

1)第一次从服务器获取数据时,将日期值传递为“”(空白)。这样,服务器就会识别出用户需要的所有数据。

2)在上述服务中,请在服务器Web服务中添加“日期”标签。因此,当您获得其他数据时,您还可以获取服务器日期。因此,请将此服务器日期存储在本地。

3)下次,当您获得其他数据然后传递此存储日期(将采用服务器格式和时区)时,服务器将仅提供在此数据之后新添加或修改的数据。

4)这样你就可以处理日期问题了。当地时间或时区也没有问题。

请查看以上观点,如有任何疑问,请与我联系。

我已经在我的大多数应用程序中实现了它,并且它工作正常。

对于UTC日期,您可以使用以下功能:

-(NSString *)getUTCFormateDate
{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
    [dateFormatter setTimeZone:timeZone];
    [dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
    NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];
    //NSLog(@"UTC Date = %@",dateString);

    return dateString;
}

我希望,这会对你有所帮助。

感谢。