前提・実現したいこと
有効期限などを計算する際に現在日時の1年後を計算することがよくあると思います。
その際の計算方法としてNSCalendarのdateByAddingComponentsを使用すればよいと思っていましたが、場合によって計算がうまくいかない場合がありました。
なにか勘違いしているだけなのか。。。
わかる方いらっしゃいましたらよろしくお願いします。
ObjectiveC
1 NSDateComponents* com = [NSDateComponents new]; 2 [com setYear:2018]; 3 [com setMonth:12]; 4 [com setDay:29]; 5 NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 6 NSDate* baseDay = [calendar dateFromComponents:com]; 7 NSDateComponents *date= [[NSDateComponents alloc] init]; 8 date.year= 1; 9 NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; 10 [fmt setCalendar:calendar]; 11 [fmt setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"]]; 12 fmt.timeZone = [NSTimeZone systemTimeZone]; 13 fmt.dateFormat = @"YYYY/MM/dd"; 14 NSDate *expireDate = [calendar dateByAddingComponents:date toDate:baseDay options:0]; 15 NSSTring *strExpireDate = [NSString stringWithFormat:@"%@",[fmt stringFromDate:expireDate]]; 16
↑の実装であればstrExpireDateは2019/12/29になってほしいところですが、実際は2020/12/29になります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。