Mam drawRect, który sprawia, że linia czasu jest trochę jak iCal. Używam pętli for do zapisywania czasów w widoku przewijania. Zastanawiałem się, czy A) jest sposób na określenie, czy użytkownik wybrał zegar 12- lub 24-godzinny w ustawieniach systemowych i B) czy istnieje skuteczniejszy sposób zmiany etykiet czasowych, a następnie wywołanie zapytania "jeśli" przy każdym przejściu pętli "for". CheersZnajdź, czy użytkownik woli zegar 12/24-godzinny?
Odpowiedz
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);
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
}
To jest właściwie najlepsza odpowiedź, ponieważ wiele krajów określa AM i PM jako pm i p. .. – MiguelB
@Leuguimerius, ale niektóre języki, jak chiński, używają zupełnie innych znaków dla AM i PM. Zobacz moją odpowiedź http://stackoverflow.com/a/23621308/72176, jak sobie z tym poradzić. –
@WilliamDenniss Brilliant! Rozwiązuje wszystko. Nie miałem pojęcia, że taki formatter istnieje. – MiguelB
wcześniejszych odpowiedzi zakładają, że "AM" i "PM" Symbole są reprezentowane łacińską. Ten kod zaadaptowany z wersji keyur bhalodiya lepiej radzi sobie z obsługą języków takich jak chiński, stosując metody AMSymbol
i .
-(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);
}
- 1. Czy planista linuksowy woli uruchamiać proces potomny po fork()?
- 2. SignalR - Sprawdzanie, czy użytkownik jest nadal podłączony
- 3. Czy istnieje zegar Asynchroniczny Dot.Net 4.5
- 4. iOS 11 woli Wielkie Tytuly Dziwne Przejście
- 5. java 8 czas api - Instant.now (zegar) vs LocaldateTime.now (zegar)
- 6. Jak sprawdzić, czy zegar wciąż działa, czy nie?
- 7. Jak działa zegar jaśminowy?
- 8. Jak sprawdzić, czy użytkownik preferuje mile lub kilometry?
- 9. Znajdź lokalne grupy, do których należy użytkownik domeny?
- 10. Sprawdzanie, czy istnieje użytkownik mysql
- 11. Sprawdź, czy użytkownik anulował SKPaymentTransaction
- 12. sprawdzić, czy użytkownik jest zalogowany użytkownik kontroli ASP.NET MVC
- 13. Czy na moim sprzęcie jest uszkodzony zegar czasu.h()?
- 14. Czy interfejs API timeBeginPeriod wpływa na zegar systemowy?
- 15. Prosty zegar w Meteor JS
- 16. Trudno zrozumieć zegar losowy Gaussa?
- 17. Niezawodny zegar w aplikacji konsolowej
- 18. Jak zrobić zegar javascript reload
- 19. Gdzie dodać zegar w Xamarin.iOS?
- 20. Zegar wysokiej rozdzielczości z C++ i Linux?
- 21. Ciągle aktualizowany zegar w wierszu zsh?
- 22. Jak skorygować zegar systemowy w włóczęgi automatycznie
- 23. Google AppEngine wystąpienie serwera zegar synchronizacja
- 24. Czy użytkownik może zmodyfikować sesję PHP?
- 25. Sprawdzanie, czy użytkownik Django ma ustawione hasło
- 26. składni, należy sprawdzić, czy użytkownik jest zalogowany
- 27. Jak sprawdzić, czy użytkownik naciska klawisz?
- 28. Wykryj, czy użytkownik kliknie wewnątrz kręgu
- 29. Sprawdź, czy użytkownik wpisuje w oknie konsoli
- 30. Wykryj, czy użytkownik ma możliwości drukowania?
Musisz być ostrożny. Jeśli użytkownik ustawił tryb 12/24 godzinny w Ustawieniach w przeciwieństwie do ustawień narodowych, to NSDateFormatter (i prawdopodobnie kilka innych) ignoruje obecność/brak jakiegokolwiek kwalifikatora "a" i dostarcza (lub nie) wartość AM/PM na podstawie Ustawienie trybu 12/24 godzin. To wszystko jest dość niebezpieczne. –