开发者

Get next year from the current NSDate?

开发者 https://www.devze.com 2023-01-30 05:56 出处:网络
I have a calendar application in which I want to get the next year fr开发者_C百科om the current date (NSDate).

I have a calendar application in which I want to get the next year fr开发者_C百科om the current date (NSDate).

How can I do this?


You can make NSDateComponents do all the hard work of calculating leap years and leap seconds:

NSDate *today = [[NSDate alloc] init];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setYear:1];
NSDate *nextYear = [gregorian dateByAddingComponents:offsetComponents toDate:today options:0];


As VdesmedT mentioned, you can use dateByAddingTimeInterval and add the seconds of one year. But to be more precise, you can do the following:

NSDate *today = [NSDate date]; // get the current date
NSCalendar* cal = [NSCalendar currentCalendar]; // get current calender
NSDateComponents* dateOnlyToday = [cal components:( NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit ) fromDate:today];
[dateOnlyToday setYear:([dateOnlyToday year] + 1)];
NSDate *nextYear = [cal dateFromComponents:dateOnlyToday];

Hope this helps.


Swift 4:

let calendar = Calendar.current
let newDate = calendar.date(byAdding: .year, value: 1, to: Date())


This is my version: in swift.

let calendar = NSCalendar.currentCalendar()
let newDate = calendar.dateByAddingUnit(.Year, value: 1, toDate: NSDate(), options: NSCalendarOptions.MatchNextTime)
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号