iOS dateFormatter dateFromString月份问题

时间:2011-11-11 00:44:41

标签: objective-c ios nsdateformatter

希望这只是一个快速的,我错过了一些简单的......

我有一个NSDateFormatter,我用它将字符串 2011-11-10 转换为Date对象。

NSDateFormatter *fmtDate = [[NSDateFormatter alloc] init];
[fmtDate setDateFormat:@"YYYY-MM-DD"];

// input of 2011-11-10, output of 2011-01-10 00:00:00 +0000        
[appointment setDate:[fmtDate dateFromString:
  [tempAppointment objectForKey:@"date"]
]];

NSDateFormatter的返回存储在managedObjectContext中。我的问题是dateFormatter将日期返回为 2011-01-10 00:00:00 +0000

为什么从Nobvember减少到1月?它保留了一年又一天的好,但不是一个月。

我是否需要包含存储日期的时间?或者它与我设置的格式有关吗?

2 个答案:

答案 0 :(得分:2)

在“使用格式字符串指定自定义格式”部分中,使用格式@“yyyy-MM-dd”获取指定here的格式。它有一个例子,并将YYYY列为常见错误。

答案 1 :(得分:1)

使用YYYY,您的日期格式字符串不正确。试试yyyy-M-d或yyyy-MM-dd

NSString *dateString = @"2011-11-10";

NSDateFormatter *fmtDate = [[NSDateFormatter alloc] init];
[fmtDate setDateFormat:@"yyyy-M-d"];

NSDate *date = [fmtDate dateFromString:dateString];
NSLog(@"date: %@", date);

输出:

2011-11-10 20:01:40.638 Craplet[81514:707] date: 2011-11-10 05:00:00 +0000

请参阅:

http://unicode.org/reports/tr35/tr35-10.html#Date_Format_Patterns