2012-03-27 13 views
0

私は24時間形式で作成された日付時刻としてレコードがデータベースに格納されるいくつかの詳細を追加するたびに、アプリケーションを開発しています。しかし、私は12時間形式で時間を表示している表示目的のために。時間を表示するために "dd-MMM-yyyy hh:mm a"形式を使用していて、画面に正しく表示されますが、ユーザーが日付/時刻形式を12時間から24時間形式に変更するたびに問題が発生します。私のアプリは24時間形式で時刻を表示し始めます。誰でも設定を24時間形式に設定を変更しても、私はそれを助けることができますplz。時間形式は12から24時間に変更しないでください。どのように表示する12時間の形式で時間iphoneで

+0

ユーザーが時間形式を12時間から24時間に変更した場合、それはその方法が好きなからです。ユーザーの選択を尊重する必要があります。 – JeremyP

答えて

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

ここでは、日付形式を別の形式に変換するためにdatetime形式を変換するかどうかを指定します*/ dateFormat = [[[NSDateFormatter alloc] init] 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]; –

+0

ユーザーのロケールに時刻形式が指定されています。それは好ましい設定であり、あなたのアプリケーションは、ユーザがそれを知覚することが便利でなければならないように、日付情報をそのような方法で提示すべきである。したがって、一般的に、フォーマットを12時間に変更しないでください。 –

+0

12時間形式を使用するロケールを強制する方法を示すために、回答を編集しました。これはアップルのドキュメントからです:https://developer.apple.com/library/ios/#qa/qa2010/qa1480.html – rosslebeau

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]; 
関連する問題