1

目前正在使用的应用程序是 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 上的语言环境相同。

对此的任何帮助将不胜感激。

4

0 回答 0