从字符串到NSDate

时间:2013-11-05 10:52:41

标签: ios nsdate nsdateformatter

我正在尝试将字符串转换为NSDate。并且不明白我的代码有什么问题。

   dateString = [NSString stringWithFormat:@"Sun 02 feb 14 12:30"];
    NSLog(@"dateString %@",dateString);
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
     [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
    [dateFormatter setDateFormat:@"EEE dd MMM yy HH:mm"];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
    NSDate *dateFromString = [[NSDate alloc] init];
    dateFromString = [dateFormatter dateFromString:dateString];


    NSLog(@"dateFromString %@",dateFromString);

我没有。我尝试了不同的日期(相同的格式),总是零。 例如。星期四07年11月13日12:45

有人看到了这个错误吗?

2 个答案:

答案 0 :(得分:5)

您缺少日期的区域设置,请将日期格式化程序的locale设置为英语,以确保日期为英文:

NSString *dateString = @"Sun 02 feb 14 12:30";
NSLog(@"dateString %@",dateString);

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE dd MMM yy HH:mm"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en"] autorelease]];
NSDate *dateFromString = [dateFormatter dateFromString:dateString];

NSLog(@"dateFromString %@",dateFromString);

此处alloc也不需要NSDate *dateFromString = [[NSDate alloc] init];日期。如果您不使用ARC,则只需泄漏NSDate个对象。如果您使用ARC,请从autorelease删除NSLocale

答案 1 :(得分:0)

 dateString = [NSString stringWithFormat:@"Sun 02 feb 14 12:30"];
    NSLog(@"dateString %@",dateString);
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
    [dateFormatter setDateFormat:@"EEE dd MMM yy HH:mm"];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
    NSDate *dateFromString = [NSDate alloc];
    dateFromString = [dateFormatter dateFromString:dateString];

此代码作为输出:dateFromString 2014-02-02 12:30:00 +0000这是正确的。