2013-01-18 43 views
11

我有这个字符串---->孙,二零一二年十二月十六日15点30分22秒+0000转换日期字符串NSDate的目标C/iOS的

我想将其转换为NSDate的。我曾尝试下面的代码,但它给我空

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 

[df setDateFormat:@"yyyy-MM-dd hh:mm:ss a"]; 

NSDate *date = [[NSDate alloc] init]; 

date = [df dateFromString: @"Sun, 16 Dec 2012 15:30:22 +0000"]; 

NSLog(@"date: %@", date); 

我没有得到这个问题?

任何指导PLZ

+0

1)你不需要'分配/ init''date'使用它之前。你在该行上创建的对象将被泄露(在MRC中)或立即被丢弃(在ARC中)。2)你的日期是否看起来像*“yyyy-MM-dd hh:mm:ss a”会暗示它应该? –

+0

可能重复[如何将字符串转换为NSDate在iPhone?](http://stackoverflow.com/questions/6288371/how-to-convert-string-to-nsdate-in-iphone) –

回答

14

格式化程序的dateFormat需要与您提供的字符串格式相匹配。

因此这样的事情应该工作

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
formatter.dateFormat = @"EEE, dd MMM yyyy HH:mm:ss ZZZ"; 

NSLog(@"%@", [formatter dateFromString:@"Fri, 18 Jan 2013 15:30:22 +0000"]); 

要查找什么符实际上意味着检查Unicode Technical Standard #35

4

试试这个代码

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 

    [df setDateFormat:@"EEEE, dd MMM yyyy"]; 

    NSDate *date = [[NSDate alloc] init]; 

    date = [df dateFromString: @"Sun, 16 Dec 2012"]; 

    NSLog(@"date: %@", date); 

希望它可以帮助你..

编辑: -

为了您的字符串

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 

    [df setDateFormat:@"EEEE, dd MMM yyyy HH:mm:ss z"]; 

    NSDate *date = [[NSDate alloc] init]; 

    date = [df dateFromString: @"Sun, 16 Dec 2012 15:30:22 +0000"]; 

    NSLog(@"date: %@", date); 
+0

感谢Prateek现在的工作,但是当我想将这个字符串“Sun,2012年12月16日15:30:22 +0000”转换为NSDate时,它再次给我null – AppDeveloper

+0

@AppDeveloper检查我的编辑部分,代码也是如此! –

+0

@AppDeveloper它有效吗? –

3

试试这个得到N从字符串SDATE

- (NSDate*) dateFromString:(NSString*)aStr 
{ 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]]; 
    //[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss a"]; 
    [dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"]; 
    [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 

    NSLog(@"%@", aStr); 
    NSDate *aDate = [dateFormatter dateFromString:aStr]; 
    [dateFormatter release]; 
    return aDate; 
} 

它适用于我。

+0

你对,错过了。我的错。 我已经以正确的格式编辑它 –

相关问题