2015-11-17 45 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',因为周日并不是每周到处的第一天。 –