目前正在使用的应用程序是 iPhone 应用程序,后端位于 .Net 中。iPhone 应用程序使用 WCF RestFul API。服务器使用的数据库是 MS SQL 和objective-c(xcode4.5,iOS6)中的客户端。我在服务器端以 smallDateTime 的形式存储日期。在以 JSON 格式获取此日期后,我使用下面提到的代码将其转换为 NSDate。以下是我从服务器接收的示例日期字符串 (serverDate=/Date(1356527635798+0500)/)。
以下是用于转换的 iPhone 端代码。
+ (NSDate *)convertServerDateToNSDate:(NSString *)serverDate
{
serverDate = [serverDate stringByReplacingOccurrencesOfString:@"\"" withString:@""];
serverDate = [serverDate stringByReplacingOccurrencesOfString:@"\\" withString:@""];
if(serverDate == nil)
return nil;
NSDate * nsDate;
NSCharacterSet * tempSet1 = [NSCharacterSet characterSetWithCharactersInString:@"("];
serverDate = [serverDate stringByReplacingOccurrencesOfString:@"-" withString:@"+"];
NSCharacterSet * tempSet2 = [NSCharacterSet characterSetWithCharactersInString:@"+"];
NSRange startRange = [serverDate rangeOfCharacterFromSet:tempSet1];
NSRange endRange = [serverDate rangeOfCharacterFromSet:tempSet2];
NSRange actualRange;
actualRange.location = startRange.location + 1;
actualRange.length = endRange.location - actualRange.location;
NSString * tempString = [serverDate substringWithRange:actualRange];
double timeInSecs = [tempString doubleValue]/1000;
nsDate = [NSDate dateWithTimeIntervalSince1970:timeInSecs];
return nsDate;
}
日期转换在 iOS-Simulator 6.0 上是完美的,但在我的 ipod 上转换的日期少了一天。我试图搜索它并自己做,但每次我比实际日期少 1 天。
1)有什么问题?
2)我该如何解决?
3) 我确保模拟器和 iPod 上的语言环境相同。
对此的任何帮助将不胜感激。