Есть ли лучший способ сделать это?
-(NSDate *)getMidnightTommorow {
NSCalendarDate *now = [NSCalendarDate date];
NSCalendarDate *tomorrow = [now dateByAddingYears:0 months:0 days:1 hours:0 minutes:0 seconds:0];
return [NSCalendarDate dateWithYear:[tomorrow yearOfCommonEra]
month:[tomorrow monthOfYear]
day:[tomorrow dayOfMonth]
hour:0
minute:0
second:0
timeZone:[tomorrow timeZone]];
}
Обратите внимание, что я всегда хочу следующую полночь, даже если это будет полночь, когда я делаю этот звонок, однако, если это происходит в 23:59:59, я, конечно, хочу, чтобы полночь наступила через одну секунду.
Функции на естественном языке кажутся нестабильными, и я не уверен, что сделал бы Какао, если бы я пропустил 32 в поле "день". (Если бы это сработало, я мог бы отбросить вызов [now dateByAddingYears: ...])