Mam NSString i muszę sprawdzić, czy jest w tym określonym formacie MM/DD/RR. Muszę następnie przekonwertować to na NSDate. Każda pomoc w tej sprawie byłaby bardzo doceniana. Sidenote - przeszukiwałem i ludzie sugerują używanie RegEx, nigdy nie korzystałem z tego i jestem niejasny na ten temat ogólnie. Czy ktoś może wskazać mi dobry zasób/wyjaśnienie.Sprawdź NSString dla określonego formatu daty
Odpowiedz
Dla obu zadań użyj NSDateFormatter
. Jeśli możesz przekonwertować ciąg na datę, to jest on we właściwym formacie (i już masz wynik).
NSString *strDate1 = @"02/09/13";
NSString *strDate2 = @"0123/234/234";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/MM/yy"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
NSDate *dateFormat1 = [dateFormatter dateFromString:strDate1];
NSDate *dateFormat2 = [dateFormatter dateFromString:strDate2];
NSLog(@"%@", dateFormat1); // prints 2013-09-02 00:00:00 +0000
NSLog(@"%@", dateFormat2); // prints (null)
Dzięki temu będziesz wiedzieć, kiedy nie jest poprawnie sformatowany, jeśli NSDate jest zerowe. Oto link do dokumentów, jeśli potrzebujesz więcej informacji: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html#//apple_ref/doc/uid/TP40002369-SW1
Wiem, że jest to odpowiedź spóźniona, ale nie można zawsze zagwarantować, że ciąg znaków jest w tym konkretnym formacie daty.
Formant daty, wyrażenie regularne, a nawet człowiek nie może zweryfikować niektórych dat, ponieważ nie wiemy, czy użytkownik wprowadza "mm/DD/rr" lub "DD/mm/rr". W niektórych miejscowościach często zdarza się, że najpierw rozpoczynasz dzień miesiąca, podczas gdy w innych obszarach najpierw wpisujesz miesiąc. Więc jeśli wpisują "09/06/2013", czy mają na myśli "6 września" lub "9 czerwca"?
Oto prosta funkcja dla każdego, kto szuka prostego rozwiązania.
- (BOOL) isTheStringDate: (NSString*) theString
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:theString];
if (dateFromString !=nil) {
return true;
}
else {
return false;
}
}
Należy zmienić formatownik poniżej, aby dopasować formatowanie używane przez datę.
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
- 1. Komponowanie formatu Unicode char dla NSString
- 2. Tworzenie określonego formatu JSON
- 3. Jak analizować ciąg daty formatu JSON do formatu daty
- 4. Ustawianie domyślnego formatu daty dla datepika?
- 5. Sprawdź całkowity rozmiar pliku określonego katalogu dla określonego użytkownika.
- 6. Zmiana formatu daty
- 7. Odliczanie JavaScript dla określonego czasu i daty
- 8. Sprawdź wersję glibc dla określonego kompilatora gcc
- 9. Jak konwertować XML do formatu daty Cocoa
- 10. zmiana formatu daty w php
- 11. Ciąg Django do formatu daty:
- 12. Zmiana formatu daty w R
- 13. SWT Zmiana formatu daty DateTime
- 14. przekonwertować ciąg do formatu daty
- 15. Sprawdź wsparcie dla przeglądarki dla określonego typu Mime?
- 16. Użyj formatu sed lub awk do ustalenia formatu daty.
- 17. Data PHP do formatu daty iCal dla DTSTART
- 18. Zmiana formatu daty w szablonach wyświetlania dla programu SharePoint 2013
- 19. Ustawianie formatu daty dla tekstu wejściowego przy użyciu Spring MVC
- 20. jak kwerenda w sqlite dla innego formatu daty
- 21. Konwersja formatu daty JavaScript do żądanego formatu PHP
- 22. regex do zweryfikowania formatu daty UTC
- 23. Konwersja ciąg do formatu daty w Pythonie
- 24. przekonwertować do formatu daty php mysql
- 25. Zapytanie Oracle dla formatu Data
- 26. MySQL ORDER BY Pole daty, które nie ma formatu daty
- 27. Zmiana formatu daty na "% d /% m /% Y"
- 28. Jak mogę przekonwertować kleszcze do formatu daty?
- 29. Moment.js Dołącz tekst w środku formatu daty
- 30. Zmiana formatu daty ciąg w android
@lnafziger ma rację. Pamiętaj o tym, jeśli używasz czegoś podobnego do tego, co umieściłem powyżej. –