2011-04-18 66 views
0

我想知道现在和下一个星期三14:00之间的差异。计算直到iOS中给定时间点的时间

我发现[NSDate date];给我的当前时间和日期,以及一个NSTimeInterval通常被用于此目的(我想在其他地方使用这个区间,和别的地方想一个NSTimeInterval),所以代码将如下所示:

NSDate *now = [NSDate date]; 
NSDate *nextWednesday = ???; 
// profit 
NSTimeInterval secondsUntilNextWednesday = [nextWednesday timeIntervalSinceDate:now]; 

但是,如何得到下一个星期三的日期?编辑2:我改进了方法,我仍然非常不喜欢它,但这是一个巨大的进步。此外,它更让人想起我的伪装尝试。

- (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; 
} 

回答

1

苹果提供所有你需要知道的关于日期的方便指南:Date and Time Programming Guide

你可能想看一看类NSDateComponentsNSCalendar

请参阅日历,日期组件和日历单元>根据指南中的组件创建日期,以便根据不同的已知日期组件创建日期。

本指南还介绍了如何基于日期组件计算相对于当前日期的下一个星期三。