我有一个客户端服务器模型,其中服务器将发送一些具有日期参数的数据,iPhone将需要呈现这些数据。服务器和iPhone将位于不同的时区。所以我需要在两者中同步时间。假设用户在"07/18/2011/04 /45/EDT“(服务器时间)做了一些活动。在iPhone端,我需要将这个日期字符串转换为一个NSDate对象。
实现这一目标的最佳方法是什么?
谢谢
发布于 2013-10-03 00:00:02
很抱歉回复晚了,只是在谷歌上搜索了"NSDate同步到服务器“,然后就到了这里。我遇到了同样的问题,并写了这个很好的小类别,这对我很有帮助。
它可以返回一个同步到任何web服务器的NSDate对象,只需一个HTTP请求(每个会话)。
https://github.com/freak4pc/NSDate-ServerDate
如果你有任何问题,请随时告诉我。
发布于 2011-07-19 17:25:11
如果您希望服务器和客户端的时间相同,请使用NTP (网络时间协议)对两者进行同步。http://code.google.com/p/ios-ntp/source/browse/trunk/ntpA.xcodeproj/project.pbxproj?spec=svn25&r=25上提供了一个obj-c ntp客户端
如上所述,总是将时间存储/发送为unix时间戳(从纪元UTC开始的秒数),并在必要时转换为时区。
发布于 2011-07-18 21:52:59
您绝对可以通过以下方式来实现此目的:
1)第一次从服务端拉取数据时,传入date值为"“(空)。这样,服务器将识别用户需要所有数据。
2)在上述服务中,请在服务端web-service中添加Date标签。因此,当您获得其他数据时,您还可以获得服务器日期。因此,将此服务器日期存储在本地。
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;
}我希望它能对你有所帮助。
谢谢。
https://stackoverflow.com/questions/6733188
复制相似问题