2011-04-18 35 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

請參閱日曆,日期組件和日曆單元>根據指南中的組件創建日期,以便根據不同的已知日期組件創建日期。

本指南還介紹瞭如何基於日期組件計算相對於當前日期的下一個星期三。