Я хочу знать разницу в секундах между сегодняшним днем и, скажем, следующей средой, 14:00.
Я обнаружил, что [NSDate date];
дает мне текущее время и дату, и что NSTimeInterval
обычно используется для этой цели (и я хотел бы использовать этот интервал где-нибудь еще, а где-то еще требуется NSTimeInterval ), поэтому код будет выглядеть так:
NSDate *now = [NSDate date];
NSDate *nextWednesday = ???;
// profit
NSTimeInterval secondsUntilNextWednesday = [nextWednesday timeIntervalSinceDate:now];
Но как мне узнать дату следующей среды?
Edit2: я вроде улучшил метод, мне все еще почти не нравится, но это огромное улучшение. Кроме того, это намного больше напоминает мою псевдо-попытку.
- (NSTimeInterval)secondsUntilNextWednesday
{
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *today = [NSDate date];
NSDateComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate: today];
// 17 == 15:00, seemingly. (timezones)
[components setHour:17];
[components setWeekday:4];
NSDate *wednesday = [calendar dateFromComponents:components];
NSTimeInterval secondsToWednesday = [wednesday timeIntervalSinceDate:today];
// if secondsToWednesday is negative, it has already been wednesday, 15:00 (or 16:00 depending on DST)
if (secondsToWednesday < 0)
{
secondsToWednesday += 604800;
}
return secondsToWednesday;
}