1

ユーザーに言語を選択させるアプリケーションがあります。言語を選択すると、国の日付形式に従って日付と時刻も変更されます。

私はNSDateFormatterによってそうします.- [dateFormatter setDateFormat:.....]; 英語-米国の場合 - 「h:mm a」を使用して、午前/午後の設定を表示します。

問題は: iPhone が 12 時間モードの場合にのみ am pm が表示されます。これは、iPhone の時刻形式が自動的にチェックされるためだと思います。これを上書きする方法はありますか? 午前/午後も 24 モードで表示されます。

4

3 に答える 3

7

これは私のために働く:

dateFormatter.dateFormat = @"H:mm a";

例:

// Set up formatter
NSDateFormatter *dateFormatter;
dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"H:mm a";

// Print test date
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:8900];
NSLog(@"%@", [dateFormatter stringFromDate:date]);

出力:

14:23 PM
于 2012-10-13T09:59:08.520 に答える
0
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale currentLocale]];
[formatter setDateStyle:NSDateFormatterNoStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"hh:mm:ss a"];
NSString *date = [formatter stringFromDate:[NSDate date]];
NSArray *foo1 = [date componentsSeparatedByString:@" "];


NSRange amRange = [date rangeOfString:[formatter AMSymbol]];
NSRange pmRange = [date rangeOfString:[formatter PMSymbol]];
BOOL is24h = (amRange.location == NSNotFound && pmRange.location == NSNotFound);

NSArray *foo2 = [[foo1 objectAtIndex:0] componentsSeparatedByString:@":"];
int hour = [[foo2 objectAtIndex:0] intValue];
int minute = [[foo2 objectAtIndex:1] intValue];
int second = [[foo2 objectAtIndex:2] intValue];

BOOL isAM = NO;

if (is24h) {
    if (hour >= 12) {
        isAM = NO;
    } else {
        isAM = YES;
    }
} else {
    isAM = [[foo1 objectAtIndex:1] isEqualToString:@"AM"];
}
于 2014-09-16T09:21:41.750 に答える