Ios 如何将NSString转换为具有特定格式的NSDate

Ios 如何将NSString转换为具有特定格式的NSDate,ios,nsstring,nsdate,nsdateformatter,Ios,Nsstring,Nsdate,Nsdateformatter,如果以前有人问过这个问题,我很抱歉,但我做了很多检查,似乎找不到答案( 我有一个字符串“2013-05-7 05:53:15+0000”,我想将其转换为NSDate,以便与当前日期和时间进行比较。我不知道如何执行此操作:(我成功地转换了它,但它改变了字符串的外观,我希望它完全是2013-05-7 05:53:15+0000,因为这与我的另一个NSDate项的格式相同 非常感谢您的任何帮助 我很困惑。;)对objective C不熟悉。80年代的老VB/老C程序员试图弄明白这一点。谢谢你的帮助。:

如果以前有人问过这个问题,我很抱歉,但我做了很多检查,似乎找不到答案(

我有一个字符串“2013-05-7 05:53:15+0000”,我想将其转换为NSDate,以便与当前日期和时间进行比较。我不知道如何执行此操作:(我成功地转换了它,但它改变了字符串的外观,我希望它完全是2013-05-7 05:53:15+0000,因为这与我的另一个NSDate项的格式相同

非常感谢您的任何帮助

我很困惑。;)对objective C不熟悉。80年代的老VB/老C程序员试图弄明白这一点。谢谢你的帮助。:)

我的代码如下所示:

    NSDateFormatter *df1 = [[NSDateFormatter alloc] init];
//    [df1 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
    [df1 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
    df1.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"EN"];
  NSDate *titemdate1 = [df1 dateFromString: itemdate];

我有两个日期。一个是应用程序最后运行的日期,另一个是我使用JSON下拉的项目的日期。我想比较这两个日期(如上所述的字符串格式)。当我对字符串进行NSLog时,它们看起来很完美,但当我转换为NSDate进行比较时,我遇到了问题。有什么想法吗?

尝试使用以下代码

-(NSDate*)dateFromJsonString:(NSString*)string
{   
    NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
    [inputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"];
    NSDate *xExpDate = [inputFormatter dateFromString:string];

    return xExpDate;
}

首先,您应该知道,如果您将dateString转换为date并执行NSLog of date,它将返回GMT时间,在大多数情况下,GMT时间与系统时间不同。因此,如果您获得的字符串格式正确,则日期格式化程序可能工作正常。要检查这一点,只需将格式化的日期转换为string和pr整型输出

NSLog(@"formatted date: %@",[df1 stringFromDate:titemdate1]);
如果这没有改变任何东西,并且输出仍然错误,请尝试更改格式化程序的格式

[df1 setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"];

为什么“没有格式”,这是什么意思?最简单(目前为止)的方法是使用NSDateFormatter(而且NSDate对象没有“格式”——它们是纯时间)(我想这是您的困惑。您可以始终使用为NSDate定义的方法比较两个NSDate对象。它们的打印方式与内部表示无关。)是的-我感到困惑;)请看上面的m编辑…也许这可以帮助你们理解我的处境。如果我不知道的话,很抱歉。我有点傻,这就是我请求帮助的原因!:)我已经通过计算完成了整个应用程序,但最后一点我就是无法拼凑(您没有定义您的“问题”是什么。可能与时区有关——当您使用NSDateFormatter时,假定当前时区,除非日期指定了时区。您的是,但您没有使用该格式读取。定义了日期格式模式。您需要“yyyy-MM-dd HH:MM:ss Z”来读取该格式。