12

我正在尝试获取联系人的出生数据,但如果用户没有选择年份或联系人来自 Facebook,而年份或数据本身是隐藏的,那么它会给我该年份的“1604”值,你可以看到我图片中的意思。

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

21

恭喜,你发现了一个实现细节!

首先,Contacts 将日期存储为时间点,没有年份就无法存储时间点,因为每个时间点都有一年。因此,必须决定地址簿如何在日期中存储“未知”年份。出于以下几个原因,决定“1604”将是美好的一年:

  1. 当您谈论通讯簿时,您的通讯簿中不太可能有任何 1604 年出生的人。
  2. 1604 年是闰年(根据闰年的计算规则),这意味着如果您不知道其出生年份的人出生于 2 月 29 日,那么 1604 也可以处理。
  3. 1604 年在儒略历-公历转换之前。

因此,如果您要从通讯簿中提取出生日期,则需要将特殊情况 1604 设置为“年份未知的出生日期”。

注意:据我所知,仅在处理公历时才支持此功能。对于所有其他日历,此行为未定义。

于 2012-12-24T16:12:41.497 回答
1

您可以在 viewDidLoad 中初始化年份。

或者检查用户是否没有选择年份,显示错误消息。

于 2012-12-24T16:07:59.070 回答