2012-03-27 121 views
0

我正在開發一個應用程序,每當用戶添加一些細節記錄以24小時格式創建日期時間存儲在數據庫中。但爲了顯示目的,我以12小時格式顯示時間。即我已經使用「dd-MMM-yyyy hh:mm a」格式來顯示時間並在屏幕上正確顯示,但問題在於用戶在設置中將日期/時間格式從12小時更改爲24小時格式。我的應用程序開始以24小時格式顯示時間。即使用戶在設置中將設置更改爲24小時格式,任何人都可以幫助我。時間格式不應從12變爲24小時。如何在iphone中顯示12小時格式的時間

+0

如果用戶將時間格式從12更改爲24小時,那是因爲他/她喜歡這種方式。你應該尊重用戶的選擇。 – JeremyP 2012-03-27 14:46:03

回答

2

通常,您應該允許用戶選擇他們想要顯示的方式。

與您的代碼,你應該能夠做到這一點:

dateFormat = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
NSLocale *twelveHourLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]; 
dateFormat.locale = twelveHourLocale; 
CreatedDate = [dateFormat dateFromString:[NSString stringWithFormat:@"%@",[serviceAntInstance.arr_CreatedDate objectAtIndex:indexPath.row]]]; 
[dateFormat setDateFormat:@"dd-MMM-yyyy hh:mm a"]; 
createdDateConvert = [dateFormat stringFromDate:CreatedDate]; 
+0

這裏是代碼是否我轉換日期時間格式/ *將日期轉換爲另一種格式*/ dateFormat = [[[NSDateFormatter分配]初始化] autorelease]; [dateFormat setDateFormat:@「yyyy-MM-dd HH:mm:ss」]; CreatedDate = [dateFormat dateFromString:[NSString stringWithFormat:@「%@」,[serviceAntInstance.arr_CreatedDate objectAtIndex:indexPath.row]]]; [dateFormat setDateFormat:@「dd-MMM-yyyy hh:mm a」]; createdDateConvert = [dateFormat stringFromDate:CreatedDate]; – 2012-03-27 13:46:26

+0

時間格式是爲用戶區域指定的。這是首選的設置,並且您的應用程序應該以這種方式呈現日期信息,以便用戶感知它。所以,一般來說,你不應該改變格式爲12-h。 – 2012-03-27 13:49:59

+0

我編輯了答案以顯示如何強制使用12小時格式的區域設置。這是從蘋果的文檔:https://developer.apple.com/library/ios/#qa/qa2010/qa1480.html – rosslebeau 2012-03-27 14:34:35

2

請看看這個:

NSDateFormatter *formatterTemp = [[NSDateFormatter alloc] init]; 
[formatterTemp setLocale:[NSLocale currentLocale]]; 
[formatterTemp setDateStyle:NSDateFormatterNoStyle]; 
[formatterTemp setTimeStyle:NSDateFormatterShortStyle]; 
[formatter setDateFormat:@"MM/dd/yyyy hh:mm a"]; 
NSString *dateString = [formatter stringFromDate:[NSDate date]]; 

NSRange amRange = [dateString rangeOfString:[formatterTemp AMSymbol]]; 
NSRange pmRange = [dateString rangeOfString:[formatterTemp PMSymbol]]; 
BOOL is24h = (amRange.location == NSNotFound && pmRange.location == NSNotFound); 
[formatterTemp release]; 
NSLog(@"%@\n",(is24h ? @"YES" : @"NO")); 
1

如何利用現有的語言環境的優勢呢?

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier: @"en_US"]; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 

[formatter setLocale: locale]; 
[formatter setTimeStyle: NSDateFormatterShortStyle]; 

NSString *result = [formatter stringFromDate: [NSDate date]]; 

[formatter release]; 
[locale release]; 
相關問題