Próbuję uzyskać dane o urodzeniu dla kontaktów, ale jeśli użytkownik nie wybierze roku lub kontakt pochodzi z Facebooka i roku lub danych, które on sam jest ukryty, to daje mi wartość "1604" dla roku, który widzisz co mam na myśli.NSDate zwraca "1604" za wartość roku?
Odpowiedz
Gratulacje, odkryłeś szczegóły wdrożenia!
Po pierwsze, kontakty przechowuje daty jako punkty w czasie i nie można zapisać punktu w czasie bez roku, ponieważ każdy punkt w czasie ma rok. Dlatego też należało podjąć decyzję, w jaki sposób książka adresowa będzie przechowywać "nieznany" rok w dacie. Zdecydowano, że „1604” będzie w porządku lat, z kilku powodów:
- Kiedy mówisz książce adresowej, jest mało prawdopodobne, że będziesz mieć nikogo w swojej książce adresowej, która urodziła się w 1604 roku
- 1604 był rokiem przestępnym (według zasad liczenia lat przestępnych), co oznacza, że jeśli osoba, której rok urodzenia nie znasz, urodziła się 29 lutego, to 1604 może sobie z tym poradzić.
- 1604 był przed przełącznikiem kalendarza juliańsko-gregoriańskiego.
Tak więc, jeśli wyciągasz datki urodzin z książki adresowej, będziesz potrzebował specjalnego przypadku 1604 jako "daty urodzenia, w której rok jest nieznany".
Uwaga: Według mojej wiedzy jest to obsługiwane tylko w przypadku kalendarza gregoriańskiego. W przypadku wszystkich innych kalendarzy to zachowanie jest niezdefiniowane.
Można init roku w viewDidLoad.
Lub sprawdź, czy rok nie został wybrany przez użytkownika, obecny komunikat o błędzie.
- 1. NSDate dzień roku (swift)
- 2. NSDate w pełnym stylu, ale bez roku
- 3. NSDate zwraca niewłaściwą datę pierwszego dnia miesiąca
- 4. Javascript date.getYear() zwraca 111 w 2011 roku?
- 5. dplyr - Get ostatnią wartość dla każdego roku
- 6. Porównywanie NSDate do [data NSDate]
- 7. System.Web.Security.FormsAuthentication.Encrypt zwraca wartość null
- 8. dateDiff zwraca nieprawidłową wartość
- 9. getSystemResourceAsStream() zwraca wartość null
- 10. Plus.PeopleApi.getCurrentPerson zwraca wartość null
- 11. NSDate - rok temu, dylemat
- 12. PHP is_writable() zwraca wartość true, ale file_put_contents() zwraca wartość false
- 13. Subprocess.poll() fałszywie zwraca wartość
- 14. mapFragment.getMap() zwraca wartość null
- 15. Konstruktor zwraca wartość?
- 16. Poczta zwraca wartość false
- 17. Sensor.TYPE_ROTATION_VECTOR zwraca wartość null
- 18. ConfigurationManager.AppSettings - Zwraca wartość Null
- 19. iOS: NSPredicate za pomocą NSDate do porównania
- 20. getDrawingCache() zawsze zwraca wartość null
- 21. getResourceAsStream() zawsze zwraca wartość null
- 22. Dlaczego "wartośćAsNumber" zwraca wartość NaN jako wartość?
- 23. Dlaczego wartość Integer.respond_to? (: Even?) Zwraca wartość false?
- 24. NHibernate: Znaczenie przechwytywaczy zwraca wartość
- 25. Intent.getExtras() zawsze zwraca wartość null
- 26. Objective-C: Pierwsze liczbę dni w roku kalendarzowym
- 27. Dlaczego ta funkcja zwraca za każdym razem inną wartość?
- 28. WSContext.getUserPrincipal() zwraca wartość null dla uwierzytelniania za pomocą skrótu hasła
- 29. SecTrustEvaluate zawsze zwraca wartość kSecTrustResultRecoverableTrustFailure za pomocą SecPolicyCreateSSL
- 30. NSDate ze stringa
, więc mogę sprawdzić, czy jest równy "1604" format będzie po prostu setDateFormat: @ "MM- dd " – Omarj
@Omarj tak. Możesz wyodrębnić rok za pomocą 'NSCalendar 'w języku gregoriańskim, aby uzyskać odpowiednie' NSDateComponents'. –