2012-06-29 39 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

相關問題