没有一年将kABPersonBirthdayProperty保存到地址簿?

时间:2012-03-17 21:55:25

标签: iphone objective-c ios nsdate abrecord

我想知道如何在没有一年的情况下(即5月5日而不是1985年5月5日)为ABRecordRef添加生日。这可能吗?

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 个答案:

答案 0 :(得分:3)

您只需一个月/一天即可将出生日期设置为联系人(通过“通讯录”应用)。然后将年份设置为1604,它只是没有显示。如果在执行ABRecordSetValue()之前,将年份设置为1604,则在联系人应用程序中查看联系人时,生日将显示为“5月5日”。似乎这就是Apple指定“没有年份”的方式。如果您计划显示日期,则必须手动检查日期,否则您将显示1604年。

答案 1 :(得分:1)

您可以通过将生日年份设置为1604来执行此操作,这仅适用于公历。

有关详细信息,请参阅this question and answer

答案 2 :(得分:-1)

我担心那是不可能的。只需使用当前年份或unix参考日期,这样您至少可以拥有正确的日期和月份。