所以我有一个应用程序,其中从Web服务返回一些数据,并相应地调整UIDatePicker
。日期以下列格式返回:
12-05-2013 16:05 (dd-mm-yyyy hh:mm)
时间以24小时格式存储,但UIDatePicker为12小时或24小时,具体取决于设备上的设置。数据来自JSON数组,是关键的potdd。我正在设置的日期选择器称为potddatepicker。
NSDateFormatter *inputFormat = [[NSDateFormatter alloc] init];
[inputFormat setDateFormat:@"dd-MM-yyy hh:mm"];
NSDate *inputDate = [inputFormat dateFromString: [jsonObjects objectForKey:@"potdd"]];
NSDate *potdd = inputDate;
[_potddatepicker setDate:potdd];
如果日期在12:00之前设置,那么它可以正常工作。但是,如果日期在12之后的24小时内存储,那么它会崩溃并出现以下异常:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: date'
我并不特别希望将时间强制为12小时格式仅用于日期选择器,然后在它出现时将其强制恢复到24小时,因为在某些本地人中它可能用于24小时日期选择器。谁知道我怎么处理这个?我无法更改时间存储在数据库中的格式。
谢谢!
答案 0 :(得分:7)
您的错误与日期选择器无关。
您使用错误的日期格式来解析字符串。你需要:
[inputFormat setDateFormat:@"dd-MM-yyyy HH:mm"]; // HH is 24-hour, hh is 12-hour
此外,由于您使用的是固定格式,因此应将日期格式化程序的区域设置设置为en_US_POSIX
。
答案 1 :(得分:3)
我怀疑您只想在输入格式中使用HH
而不是hh
。 HH
为24小时,hh
为12小时。我怀疑你也想要MM
而不是第一个mm
。 (MM
是两位数的月份说明符; mm
是两位数分钟说明符。您不想将分钟设置两次!)
因此格式12-05-2013 16:05
的值dd-mm-yyyy hh:mm
无效 - 但它对dd-MM-yyyy HH:mm
有效。
有关详细信息,请参阅Unicode Date Format Patterns文档 - 基本上您需要注意您的模式与输入数据相匹配。我希望希望选择器的UI设置独立于您的JSON数据输入格式,但我还没有充分了解iOS开发以确定。