2015-11-17 87 views
1

所以我正在做一個基本的星期選擇器,在那裏你可以選擇一個星期的數字和年份,並從星期幾的起點獲取相應的日期。NSDateComponents weekOfYear返回錯誤的日期

一個基本的測試場景

let calendar = NSCalendar.currentCalendar() 
let components = NSDateComponents() 
components.year = 2015 
components.weekOfYear = 15 
print(calendar.dateFromComponents(components)!) 

你可以看到,我設置有用年至2015年和想要的每週15個,但結果我得到的是:「2014-12-31 23:00 :00 +0000「

......那真的讓我掛了。無論我選擇哪一週和哪一年,它都會在十二月份關閉。

非常感謝您的幫助。

回答

4

weekOfYear作品連同yearForWeekOfYear

let calendar = NSCalendar.currentCalendar() 
let components = NSDateComponents() 

components.yearForWeekOfYear = 2015 
components.weekOfYear = 15 

print(calendar.dateFromComponents(components)!) 
// 2015-04-05 22:00:00 +0000 

更新斯威夫特3及更高版本:

let calendar = Calendar.current 
var components = DateComponents() 

components.yearForWeekOfYear = 2015 
components.weekOfYear = 15 

print(calendar.date(from: components)!) 
+1

有趣的小紙條,平日設置爲1也產生了結果,只是認爲這是有趣的,應該提到 – Knight0fDragon

+0

@ Knight0fDragon:有趣的,這似乎也適用。但你最好設置'components.weekday = calendar.firstWeekday',因爲週日並不是每週到處的第一天。 –