我有一个客户端服务器模型,其中服务器将发送一些具有日期参数的数据,iPhone将需要呈现它。服务器和iPhone将驻留在不同的时区。所以我需要在两者中同步时间。假设用户在“07/18/2011/04 / 45 / EDT”(服务器时间)完成了一些活动。从iPhone端我需要将此日期字符串转换为NSDate对象。
实现这一目标的最佳方法是什么。
谢谢
答案 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;
}
我希望,这会对你有所帮助。
感谢。