作者:崔显莉京_716 | 来源:互联网 | 2023-05-27 10:01
我过去使用以下函数来使用NSDateComponents
现有日期添加特定时间间隔.
(NSDate *)dateByAddingComponents:(NSDateComponents *)comps
toDate:(NSDate *)date
options:(NSCalendarOptions)opts
从iOS8开始,不推荐使用周值NSDateComponents
,这意味着我无法实现我想要做的事情:NSDate
通过向给定数量添加特定周数来生成新值NSDate
.
任何帮助将不胜感激.
1> zaph..:
只需使用weekOfYear
:
Apple文档NSDateComponents
week
:
弃用语句
使用weekOfYear或weekOfMonth,具体取决于您的意图.
NSDate *date = [NSDate date];
NSDateComponents *comp = [NSDateComponents new];
comp.weekOfYear = 3;
NSDate *date1 = [[NSCalendar currentCalendar] dateByAddingComponents:comp toDate:date options:0];
NSLog(@"date: %@", date);
NSLog(@"date1: %@", date1);
输出:
date: 2015-01-13 04:06:26 +0000
date1: 2015-02-03 04:06:26 +0000
如果你使用,week
你得到这个警告:
'周'已弃用:首先弃用... - 使用weekOfMonth或weekOfYear,具体取决于您的意思
当使用weekOfMonth
或weekOfYear
作为delta时,它们的工作方式相同.它们不同的地方在于它们被用来获得星期数,在那里您将获得6个星期或一年中53周的星期.
2> Lyndsey Scot..:
更新:正如Zaph在回答中所说,Apple实际上建议使用weekOfYear
或weekOfMonth
代替我提供的答案.查看Zaph的答案以获取详细信息.
你可能会很快意识到你正在过度思考它,但是这里有一些方法可以为一个日期添加一定的周数,即使周价值已被弃用,例如:
NSDateComponents *comp = [NSDateComponents new];
int numberOfDaysInAWeek = 7;
int weeks = 3; // <-- this example adds 3 weeks
comp.day = weeks * numberOfDaysInAWeek;
NSDate *date = [[NSCalendar currentCalendar] dateByAddingComponents:comp toDate:date options:0];