iphone - 使用24-12小时格式的xcode在“TimePicker”中设置NSDate

标签 iphone ios xcode nsdate nsdateformatter

我正在使用某些NSDate对象,并且,我使用24小时格式的iPhone,所以当我测试我的应用程序时,一切正常,但是,我的一位 friend 在他的iPhone上尝试了该应用程序,但他使用了12小时格式,经过一番研究,我发现问题出在日期上,我不知道为什么
我用它来设置日期选择器和时间选择器,所以我从数据库中读取了一些值(是的,我已经检查了这些值并且它们是正确的,这不是值发布),所以所有这些数据都被格式化了并作为NSDate放在一起,然后,将日期选择器和时间选择器设置为我刚刚创建的日期

NSDateFormatter *currentDate = [[[NSDateFormatter alloc] init] autorelease];
[currentDate setDateFormat:@"yyyy-MM-dd HH:mm"];
NSDate * startDate =[currentDate dateFromString:[NSString stringWithFormat:@"%d-%d-%d %d:%d",yearVal,monthVal,dayVal,hourVal,minVal]];
[datePicker setDate:startDate];
[timePicker setDate:startDate];

因此,yearVal,monthVal,dayVal,hourVal,minVal都是NSIntegers ...
事实是,如果您的iPhone / iPod在您的时钟设置中使用24小时,则可以完美运行,但是,如果您使用12小时格式,则它会崩溃并显示此错误消息
> *** Assertion failure in -[UIDatePickerView _updateBitsForDate:forced:andReload:animateIfNeeded:], /SourceCache/UIKit/UIKit-1914.85/UIDatePicker.m:1200 2012-06-29
> 01:19:15.753 MyApp[1215:707] *** Terminating app due to uncaught
> exception 'NSInternalInconsistencyException', reason: 'Invalid
> parameter not satisfying: date'
> *** First throw call stack: (0x3710188f 0x34e06259 0x37101789 0x379403a3 0x31042807 0x30f616c5 0x30f61563 0x31042385 0xf48ef 0xf7bd3
> 0x30e0ec8b 0x30e1b1e9 0x30e1b059 0x30e1af3f 0x30e1a7c1 0x30e1a503
> 0x30e0eaff 0x30e0e7d5 0xdd945 0x30e8793d 0x30f01627 0x37972933
> 0x370d5a33 0x370d5699 0x370d426f 0x370574a5 0x3705736d 0x33816439
> 0x30e03cd5 0xd4cbb 0xd4c60) terminate called throwing an
> exception(gdb)

因此,请您对如何解决此问题有任何想法,感谢您的帮助

哦,我读过HH以24小时格式返回小时,好吧,我的所有应用程序都使用HH,所以我不明白为什么我一直在看一些“上午”。或“下午”在我打印的某些NSLogs中进行调试

提前致谢

哦,对不起,我几乎忘了我是否评论台词
[datePicker setDate:startDate];
[timePicker setDate:startDate];

该应用程序不会崩溃,但是当然,它不会显示我要求的时间和日期

注意:我需要使用24小时格式,如果我决定选择上午pm的格式,则必须更改所有应用程序,而且,我没有足够的时间进行格式化

最佳答案

像这样查看:Find if user prefers 12 / 24 Hour Clock?…认为第二个答案可能是最适合您的。然后,根据用户设备是使用12小时还是24小时,可以相应地设置[currentDate setDateFormat:....]。

如果您希望使用12小时制,请按如下所示设置currentDate:

[currentDate setDateFormat:@"yyyy-MM-dd h:mm:ss a"];

如果您希望使用24小时制,请按如下所示设置currentDate:
[currentDate setDateFormat:@"yyyy-MM-dd HH:mm"];

关于iphone - 使用24-12小时格式的xcode在“TimePicker”中设置NSDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11257127/

相关文章:

android - 适用于 android、iphone 和 windows phone 的通用编程语言

iphone - 如何更改 iPhone 应用程序中日期选择器的大小?

iphone - 有人有用于 Iphone 开发的 ECL Lisp 代码示例吗?

ios - 从 ios 项目中删除 UrbanAirShip 以进行推送通知

xcode - 如何创建以 "Open..."对话框启动的基于文档的 OS X 应用程序

iphone - cocos2d中重复背景有黑边!

iphone - NSString 中带星号的子字符串

ios - 如何加入多个 observeSingleEvent() 调用结果并在所有调用完成后执行操作?

ios - 如何使用swift将可编码结构发送到服务器

xcode - 删除 Xcode 中的旧问题