如何使用特定格式将NSString转换为NSDate

时间:2013-05-30 21:33:07

标签: ios nsstring nsdate nsdateformatter

我很抱歉,如果以前曾经问过这个,但我做了很多检查,我似乎无法找到答案。 :(

我有一个字符串“2013-05-7 05:53:15 +0000”,我想将其转换为NSDate,以便将其与当前日期和时间进行比较。我无法弄清楚如何做到这一点。 :(我成功转换它,但它改变了字符串的外观,我希望它正好是2013-05-7 05:53:15 +0000,因为这是相同的格式我有其他NSDate项目。

非常感谢任何和所有帮助。

我很困惑。 ;)新的客观C.旧的VB /较旧的C程序员从80年代试图想出这个东西。谢谢您的帮助。 :)

我的代码如下所示:

    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比较我有问题。有任何想法吗?

2 个答案:

答案 0 :(得分:1)

尝试使用以下代码..

-(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;
}

答案 1 :(得分:0)

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

NSLog(@"formatted date: %@",[df1 stringFromDate:titemdate1]);

如果没有改变任何内容且输出仍然错误,请尝试更改格式化程序的格式。

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