2012-12-24 64 views
12

我嘗試獲取聯繫人的出生數據,但如果用戶沒有選擇年份或聯繫人來自Facebook和年份或它自己隱藏的數據,所以它給我的年份「1604」值可以看到我的意思是在圖像中。NSDate年度價值回報「1604」?

enter image description here

enter image description here

回答

20

恭喜,您發現了一個實現細節!

首先,聯繫人將日期存儲爲時間點,並且不可能存儲沒有一年的時間點,因爲每個時間點都有一年。因此,必須決定地址簿如何在某個日期存儲「未知」年份。會議決定,「1604」是一個精細的一年,有以下幾個原因:

  1. 當你在談論地址簿,這是不可能的,你必須在你的地址簿中的人誰是出生於1604年
  2. 1604是一個閏年(根據閏年的計算規則),這意味着如果你不知道出生年份的人是在2月29日出生的,那麼1604也可以處理。
  3. 1604在Julian-Gregorian日曆開關之前。

因此,如果您要從地址簿中拉出生日,則需要將特殊情況1604作爲「年份未知的生日」。

注意:據我所知,只有在處理公曆時才支持。對於所有其他日曆,此行爲未定義。

+1

,這樣我可以檢查它是否等於「1604」,格式將只是setDateFormat:@「MM- dd「 – Omarj

+2

@Omarj yes。你可以使用公曆'NSCalendar'來提取年份以獲得合適的'NSDateComponents'。 –

2

您可以初始化當年viewDidLoad中。

或檢查年份是否未被用戶選擇,出現錯誤信息。

+1

好的,但這個選擇器原生添加新聯繫人?那麼來自Facebook的聯繫人呢? – Omarj

+2

你必須檢查你的年份是否與1604年不同,如果是這樣,請用戶填寫這個詳細信息 – Luda