Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 给定周的第一个日期(NSDate)_Objective C_Date - Fatal编程技术网

Objective c 给定周的第一个日期(NSDate)

Objective c 给定周的第一个日期(NSDate),objective-c,date,Objective C,Date,我有一个整数表示的周数,我想得到该周的第一个日期(NSDate值) 例如: 2011年第21周的第一个日期(星期日)是2011年5月22日 我正在尝试使用NSCalendar和NSDateComponents来实现这一点。如果有人知道如何做到这一点,非常感谢你的帮助。尝试以下方法: NSDate *now = [NSDate date]; NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGrego

我有一个整数表示的周数,我想得到该周的第一个日期(NSDate值)

例如: 2011年第21周的第一个日期(星期日)是2011年5月22日

我正在尝试使用NSCalendar和NSDateComponents来实现这一点。如果有人知道如何做到这一点,非常感谢你的帮助。

尝试以下方法:

NSDate *now = [NSDate date];
NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *comp = [gregorian components:NSYearCalendarUnit fromDate:now];
[comp setWeekday:1];
[comp setWeek: 21];
NSDate *resultDate = [gregorian dateFromComponents:comp];
尝试以下方法:

NSDate *now = [NSDate date];
NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *comp = [gregorian components:NSYearCalendarUnit fromDate:now];
[comp setWeekday:1];
[comp setWeek: 21];
NSDate *resultDate = [gregorian dateFromComponents:comp];

展示你做了什么,这样我们就可以用更少的代码来看看这是否可行。但使用NSCalendar和NSDateComponents是完成该任务的正确方法Vladimir,实际上我正试图得到这个结果,所以我没有完整的代码。不管怎样,我正在尝试,如果找到了,我会用代码编辑我的问题。展示你做了什么,这样我们就可以用更少的代码来看看这是否可行。但使用NSCalendar和NSDateComponents是完成该任务的正确方法Vladimir,实际上我正试图得到这个结果,所以我没有完整的代码。不管怎样,我正在尝试,如果找到了,我会用代码编辑我的问题。谢谢你的帮助-结果是2011-05-21 18:30:00+0000-21日是星期六,应该是22日,不是吗我正在模拟器上运行。@Viraj,这是因为NSDate将日期存储在GMT时区,当您打印它时,NSLog会将您的本地时区记入帐户谢谢您的帮助-结果是2011-05-21 18:30:00+0000-21号是星期六,应该是22号,不是吗我正在模拟器上运行。@Viraj,这是因为NSDate将日期存储在GMT时区,当您打印它时,NSLog将考虑您的本地时区