Nsdate возвращает значение "1604" за год?

Я пытаюсь получить данные о рождении для контактов, но если пользователь не выбирает год или контакт приходит из Facebook, а год или данные, которые он сам скрыт, поэтому он дает мне значение "1604" за год u может видеть, что я имею в виду на изображении.

enter image description here

enter image description here

2 ответов


Поздравляем, вы обнаружили деталь реализации!

во-первых, контакты хранит даты как точки во времени, и невозможно хранить точку во времени без года, потому что каждый момент времени имеет год. Таким образом, необходимо было принять решение о том, как адресная книга будет хранить "неизвестный" год в дате. Было решено, что" 1604 " будет прекрасным годом, по нескольким причинам:

  1. когда вы говорите о адресной книге, маловероятно, что в вашей записной книжке есть любой, кто родился в 1604 году.
  2. 1604 было до Юлианско-григорианского календаря.

таким образом, если вы вытаскиваете даты рождения из адресной книги, вам понадобится специальный случай 1604 как " дата рождения, где год неизвестный."

Примечание: насколько мне известно, эта функция поддерживается только при работе с Григорианским календарем. Для всех других календарей это поведение не определено.


вы можете init год в viewDidLoad.

или проверьте, не был ли год выбран пользователем, присутствует сообщение об ошибке.