NSDate格式化:以意外格式返回字符串

时间:2014-03-21 19:01:04

标签: objective-c nsdate nsdateformatter

我收到了这个字符串:

2013年11月28日09:05:59

我正在尝试使用此代码转换为日期:

dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"MMMM dd, yyyy HH:mm:ss"];
    NSDate* dateFromString = [[NSDate alloc] init];
    dateFromString = [dateFormatter dateFromString:strToConvert];

    return dateFromString;

但是我没有收回上述格式:

2013-11-28 21:05:59 +0000

编辑:我最初说的是nil,但从那时起就回复了一些东西,而不是我所期待的。

1 个答案:

答案 0 :(得分:1)

我的猜测是,您将字符串转换为日期,然后按照以下方式打印:

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

您并不清楚为什么它不是您指定的格式。格式不会影响日期。 NSDate是一个固定的时间点,日期格式化程序仅提供有关如何将字符串转换为此固定点的必要信息。打印时,它以标准格式打印。我假设dateFormatter是一个全局变量,因为你不是在这里定义它。如果是这样的话,那么最好不要这样打印:

NSLog(@"dateFromString: %@", [dateFormatter stringFromDate:dateFromString]);

看到您的更新后,我发现了另一个问题:

NSString * strToConvert = @"November, 28 2013 09:05:59";
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];

// NOTICE MOVED COMMA
[dateFormatter setDateFormat:@"MMMM, dd yyyy HH:mm:ss"];

NSDate* dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:strToConvert];
NSLog(@"dateFromString unformatted: %@", dateFromString);
NSLog(@"dateFromString formatted  : %@", [dateFormatter stringFromDate:dateFromString]);

将打印:

2014-03-21 15:27:39.532 dateFromString unformatted: 2013-11-28 14:05:59 +0000
2014-03-21 15:27:39.533 dateFromString formatted: November, 28 2013 09:05:59