Сохранить kABPersonBirthdayProperty в адресную книгу без года? - PullRequest
1 голос
/ 18 марта 2012

Я пытаюсь понять, как можно добавить день рождения в ABRecordRef без года (т. Е. 5 мая вместо 5 мая 1985 г.). Возможно ли это?

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"MM/dd/yyyy"];
NSDate *date = [df dateFromString:[result valueForKey:@"birthday"]];

if(date == nil)
{
       df = [[NSDateFormatter alloc] init];
       [df setDateFormat:@"MM/dd"];
       date = [df dateFromString:[result valueForKey:@"birthday"]];
 }

 ABRecordSetValue(person, kABPersonBirthdayProperty, (__bridge CFDateRef)date, nil);

Если к строке даты не присоединен год, то по умолчанию используется 1970, но я хочу, чтобы в адресной книге он был без года, если это вообще возможно.

Кто-нибудь знает?

Ответы [ 3 ]

3 голосов
/ 08 октября 2012

Вы можете установить дату рождения для контакта (через приложение "Контакты") только с месяцем / днем.Затем устанавливается год 1604, он просто не отображается.Если перед выполнением ABRecordSetValue () вы установили год на 1604, дата рождения будет отображаться как «5 мая» при просмотре контакта в приложении «Контакты».Похоже, что именно так Apple определяет «нет года».Вам придется вручную проверить дату позже, если вы планируете ее показывать, иначе вы увидите 1604 год.

1 голос
/ 24 декабря 2012

Вы можете сделать это, установив год дня рождения 1604, и это будет работать только с григорианским календарем.

См. этот вопрос и ответ для получения дополнительной информации.

0 голосов
/ 18 марта 2012

Боюсь, это невозможно. Просто используйте текущий год или ссылочную дату Unix, чтобы у вас были как минимум день и месяц.

...