2010-12-14 14 views
6

私は、現在の日付(NSDate)から来年を取得したいカレンダーアプリケーションを持っています。現在のNSDateから来年を取得しますか?

どうすればいいですか?

+1

現在の日付から年を取得して1つ追加してください。どの部分をやるべきか分からないのですか? – Gabe

答えて

19

あなたはNSDateComponentsはうるう年とうるう秒を計算するすべてのハードワークを行うことができます:VdesmedTが述べたように

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]; 
5

、あなたがdateByAddingTimeIntervalを使用し、一年の秒を追加することができます。しかし、より正確に言えば、以下を行うことができます:

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];

1

これは私のバージョンです。迅速です。

let calendar = NSCalendar.currentCalendar() 
let newDate = calendar.dateByAddingUnit(.Year, value: 1, toDate: NSDate(), options: NSCalendarOptions.MatchNextTime) 
関連する問題