我正在尝试将字符串转换为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
有人看到了这个错误吗?
答案 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这是正确的。