我使用UIDatePicker
来获取一个人的出生日期,并以January 19, 2012
的格式显示。我使用以下函数将日期选择器返回的日期转换为字符串格式:
-(NSString*)stringFromDate:(NSDate *)date
{
NSDateFormatter *formater =[[NSDateFormatter alloc]init];
[formater setDateFormat:@"MMMM dd, YYYY"];
NSString *str = [formater stringFromDate:date];
return str;
}
它工作正常,我得到了正确的日期转换为字符串。现在,为了调用web服务来保存此数据,我再次使用如下所示的相同日期格式化程序格式将此字符串转换为数据:
- (NSDate *)dateFromString:(NSString *)string
{
NSDateFormatter *formater =[[NSDateFormatter alloc]init];
[formater setDateFormat:@"MMMM dd, YYYY"];
NSDate *date = [formater dateFromString:string];
return date;
}
但现在,如果我选择的日期是October 18, 2006
,那么上面的函数将日期返回为2005-12-24 18:30:00 +0000
,当使用第一个函数转换为字符串时,它就是December 25, 2005
。即使我使用相同的数据格式化程序,为什么在不同的情况下会发生这种情况?
不要使用YYYY
格式。请改用yyyy
。
因此,正确的日期格式看起来像[formater setDateFormat:@"MMMM dd, yyyy"];
那是你的错误。