2

NSDateがある場合、最後の深夜と次の深夜の日付を取得するにはどうすればよいですか?

4

1 に答える 1

3

これは驚くほど複雑ですが、実行可能です。

NSDate *date = ...;
NSUInteger componentFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *parts = [[NSCalendar currentCalendar] components:componentFlags fromDate:date];
NSDateComponents *midnightComponents = [[NSDateComponents alloc] init];
[midnightComponents setDay:[parts day]];
[midnightComponents setMonth:[parts month]];
[midnightComponents setYear:[parts year]];
NSCalendar *cal = [[NSCalendar currentCalendar];
NSDate *midnight = [cal dateFromComponents:midnightComponents];

NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setDay:1];
NSDate *nextMidnight = [cal dateByAddingComponents:offsetComponents toDate: midnight options:0];

Apple の設計は、たとえば .NET や Java に比べて少し複雑すぎると思いますが、扱いやすいものです。

于 2012-05-16T17:06:45.010 に答える