1

所以我有一个应用程序,其中一些数据是从 Web 服务返回的,并且 aUIDatePicker会相应地进行调整。日期以下列格式返回:

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 小时日期选择器。有人知道我该如何处理吗?我无法更改时间存储在数据库中的格式。

谢谢!

4

2 回答 2

7

您的错误与日期选择器无关。

您使用错误的日期格式来解析字符串。你需要:

[inputFormat setDateFormat:@"dd-MM-yyyy HH:mm"]; // HH is 24-hour, hh is 12-hour

此外,由于您使用的是固定格式,因此您应该将日期格式化程序的语言环境设置为en_US_POSIX.

于 2013-06-29T20:25:46.673 回答
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 日期格式模式文档 - 基本上,您需要注意您的模式与输入数据相匹配。我希望选择器的 UI 设置独立于您的 JSON 数据输入格式,但我对 iOS 开发的肯定还不够。

于 2013-06-29T20:25:24.410 回答