Pertanyaan Temukan apakah pengguna lebih suka Jam 12/24 Jam?


Saya punya drawRect yang membuat timeline sedikit seperti iCal. Saya menggunakan for loop untuk menulis waktu sepanjang tampilan gulir. Saya bertanya-tanya apakah A) ada cara untuk menentukan apakah pengguna telah memilih jam 12 atau 24 jam dalam pengaturan sistem dan B) jika ada cara yang lebih efisien untuk mengubah label waktu kemudian memanggil 'jika' permintaan setiap lulus dari 'untuk' loop. Tepuk tangan


5
2017-12-15 12:57


asal


Jawaban:


NSDate *today = [NSDate date];
NSString *formattedString = [NSDateFormatter localizedStringFromDate:today dateStyle: kCFDateFormatterNoStyle timeStyle: kCFDateFormatterShortStyle];

NSRange foundRange;
foundRange = [formattedString rangeOfString:"am" options:NSCaseInsensitiveSearch];
if(foundRange.location == NSNotFound) {
    foundRange = [formattedString rangeOfString:"pm" options:NSCaseInsensitiveSearch];
}

BOOL isAMPMSettingOn = (foundRange.location != NSNotFound);

1
2017-12-15 14:22



Jawaban sebelumnya menganggap bahwa simbol "AM" dan "PM" direpresentasikan dalam karakter roman. Kode ini diadaptasi dari keyur bhalodiya melakukan pekerjaan yang lebih baik dalam menangani bahasa seperti bahasa Cina, dengan menggunakan AMSymbol dan PMSymbol metode NSDateFormatter.

-(BOOL)uses24hourTime
{
     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
     [formatter setLocale:[NSLocale currentLocale]];
     [formatter setDateStyle:NSDateFormatterNoStyle];
     [formatter setTimeStyle:NSDateFormatterShortStyle];

     NSString *dateString = [formatter stringFromDate:[NSDate date]];
     NSRange amRange = [dateString rangeOfString:[formatter AMSymbol]];
     NSRange pmRange = [dateString rangeOfString:[formatter PMSymbol]];

     return (amRange.location == NSNotFound && pmRange.location == NSNotFound);
}

6
2018-05-13 01:07



NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateStyle:NSDateFormatterNoStyle];
[dateFormatter setTimeStyle:NSDateFormatterLongStyle];

if([[dateFormatter dateFormat] rangeOfString:@"a"].location != NSNotFound) {
    // user prefers 12 hour clock
} else {
    // user prefers 24 hour clock
}

5
2017-12-15 14:04