11

我有这个字符串 ----> Sun, 16 Dec 2012 15:30:22 +0000

我想将其转换为 NSDate。我已经尝试了下面的代码,但它给了我 null

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);

我没有得到这个问题?

任何指导请

4

3 回答 3

13

格式化程序的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

于 2013-01-18T12:14:57.887 回答
3

试试这个代码

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);
于 2013-01-18T12:11:18.893 回答
2

试试这个从字符串中获取 NSDate

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

这对我来说可以。

于 2013-01-18T12:13:59.027 回答