我有一个应用程序(iOS 7.1.1和XCode 5.1),我试图从另一个日期的部分创建日期(文本字段中缺少日期或时间)。这是我的代码:
// get recurring start and stop dates
NSArray *dateParts = [avc.boApptStart.text componentsSeparatedByString:@" "];
NSLog(@"\n\ndateParts: %@", dateParts); // dateParts: ("2014-11-07", "09:00", AM)
dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat:@"yyyy-MM-dd HHmm a"];
NSString *tempRecurrsString = [NSString stringWithFormat:@"%@ %@ %@",avc.oRecurrsStart.text, [dateParts objectAtIndex: 1], [dateParts objectAtIndex: 2]];
NSDate *recurrsStartDate = [dateFormatter dateFromString: tempRecurrsString];
NSLog(@"\n\nreccurrsStartDate: %@ avc.oRecurrsStart.text: %@",[dateFormatter stringFromDate:recurrsStartDate], avc.boApptStart.text);
tempRecurrsString = [NSString stringWithFormat:@"%@ %@ %@",avc.oRecurrsEnd.text, [dateParts objectAtIndex: 1], [dateParts objectAtIndex: 2]];
NSDate *recurrsEndDate = [dateFormatter dateFromString: tempRecurrsString];
NSLog(@"\n\nrecurrsEndDate: %@ tempDateString: %@",[dateFormatter stringFromDate:recurrsEndDate], tempRecurrsString);
这是控制台中显示的上述代码的编辑结果(删除的应用程序名称等):
reccurrsStartDate: (null)
avc.oRecurrsStart.text: 2014-11-07 09:00 AM
recurrsEndDate: (null)
tempDateString: 2014-12-31 09:00 AM
问题是:为什么不转换为NSDate?我想我所有的部件都正确连线,而对于我的生活,我无法看到我已经忘记的东西。非常感谢任何帮助!
答案 0 :(得分:1)
首先,您在:
和[dateFormatter setDateFormat:@"yyyy-MM-dd HHmm a"];
之间的HH
内错过了mm
。
其次,你应该使用hh
,这是12小时而不是HH
,这是24小时。
所以最后的字符串最终为:
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm a"];
有关日期格式的详细信息,请查看ICU User Guide。