使用NSDateFormatter生成NSDate,产生nil NSDate值

时间:2011-07-25 02:20:36

标签: iphone objective-c nsdate nsdateformatter

我正在尝试使用以下内容从字符串生成日期:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMMM dd, yyyy HH:mm:ss"];
NSLog(@"ENDINGDATE: %@", [closure objectForKey:@"ENDINGDATE"]);
NSDate *tempDate = [dateFormatter dateFromString:[closure objectForKey:@"ENDINGDATE"]];

ENDINGDATE NSLog产生以下内容:

ENDINGDATE: April, 21 2011 20:00:00

一切似乎都很好,所以我很难过为什么tempDate被设置为零。有任何想法吗?谢谢!

3 个答案:

答案 0 :(得分:27)

删除逗号后请尝试...

您可以使用以下日期格式:

d数月的日期;单位数天没有前导零。

dd每月的日期为数字;单位数天的零点。

EEE星期几作为三个字母的缩写。

dddd星期几作为其全名。

m月份为数字;单个数字月份没有前导零。

mm月份为数字;单个数字月份为零。

MMM Month作为三个字母的缩写。

mmmm月份作为其全名。

yy作为最后两位数的年份;多年来不到10岁的零点。

yyyy年份以四位数表示。

h小时;单位数小时(12小时制)没有前导零。

小时;单位数小时(12小时制)的前导零。

<小时;单位数小时(24小时制)没有前导零。

HH小时;单位数小时(24小时制)的前导零。

<分钟; M分钟;单位数分钟没有前导零。

大写字母M不同于CF时间格式,以避免与月份冲突。

MM分钟;单位数分钟的前导零。

大写MM不像CF timeFormat的mm,以避免与月份发生冲突。

秒;单位数秒没有前导零。

<秒> ss秒;单位数秒的前导零。

答案 1 :(得分:4)

,放错地方了。它应该在MMMM之后。因此格式应定义为MMMM, dd yyyy HH:mm:ss

[dateFormatter setDateFormat:@"MMMM, dd yyyy HH:mm:ss"];

答案 2 :(得分:1)

是的,如果原型格式完全与实际格式不匹配,则为零。错误的逗号可能是你的问题(或者至少是它的一部分)。