I have in the past used the below function to add on a specific time interval using NSDateComponents
to an existing date.
(NSDate *)dateByAddingComponents:(NSDateComponents *)comps
toDate:(NSDate *)date
options:(NSCalendarOptions)opts
From iOS8 the week value is deprecated for NSDateComponents
, which means I can't achieve what I want to do: generate a new NSDate
by adding a certain number of weeks to a given NSDate
.
Any help would be greatly appreciated.
Just use weekOfYear
:
Apple docs for NSDateComponents
week
:
Deprecation Statement
Use weekOfYear or weekOfMonth instead, depending on what you intend.
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);
Output:
date: 2015-01-13 04:06:26 +0000 date1: 2015-02-03 04:06:26 +0000
If you use week
you get this warning:
'week' is deprecated: first deprecated in ... - Use weekOfMonth or weekOfYear, depending on which you mean
When using the weekOfMonth
or weekOfYear
as a delta they work the same. Where they are different is when they are used to obtain the week number where you will get the week of the month with a range of 6 or the week of the year with a range of 53.
Update: As Zaph said in his answer, Apple actually recommends using weekOfYear
or weekOfMonth
instead of the answer I provided. View Zaph's answer for details.
You'll probably quickly realize that you're overthinking it, but here's how you can add a certain number of weeks to a date even though the week value's been deprecated, ex:
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];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With