2012-06-29 41 views
1

我正在使用一些NSDate对象,以及我用我的iPhone 24小时格式,所以当我测试我的应用程序时,一切都很顺利,但是,我的一个朋友在他的iPhone上尝试了应用程序,但他使用了12小时的格式,经过一些研究后,我发现问题出在日期,而我不知道为什么我使用这个设置日期选择器和时间选择器,所以我从数据库中读取了一些值(是的,我已经检查过这些值并且它们是正确的,这不是一个值问题),因此所有这些数据都格式化并放在一起作为NSDate,然后,我设置日期选取器和时间选取器,这个日期我刚创建将NSDate设置为24 - 12小时格式的“TimePicker”xcode

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]; 

所以,是啊rVal,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小时格式,如果我决定选择格式与am pm我将不得不改变我所有的应用程序,以及我没有足够的时间为此

+0

你有没有尝试设置您的日期格式像这样:[currendDate setDateFormat:@“yyyy-MM-dd h:mm:ss a”] –

+0

我需要24小时,使用我将永远有上午或下午,我不想这样,我将不得不改变我所有的应用程序,如果我改变它 –

+1

确定然后看看这样的:http://stackoverflow.com/questions/8520467/find-if-user-prefers-12-24-hour-clockI我认为第二个答案可能是最适合你的。然后根据用户的设备是否使用12小时制或24小时制,您可以相应地设置[currentDate setDateFormat:....]。 –

回答

10

看一下这个样子: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"]; 
+0

检查12/24的最快方式比你的链接:NSString * format = [NSDateFormatter dateFormatFromTemplate:@“j”options:0 locale:[NSLocale currentLocale]]; BOOL is24Hour =([format rangeOfString:@“a”]。location == NSNotFound); – Tulleb

相关问题