【问题标题】:Calculating time until a given point in time in iOS在iOS中计算直到给定时间点的时间
【发布时间】:2011-04-18 11:42:31
【问题描述】:

我想知道现在和下周三 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;
}

【问题讨论】:

    标签: cocoa-touch ios nsdate


    【解决方案1】:

    Apple 提供了一个方便的指南,其中包含您需要了解的有关日期的所有信息:Date and Time Programming Guide

    您可能想看看NSDateComponentsNSCalendar 类。

    请参阅指南中的日历、日期组件和日历单位 > 从组件创建日期,了解基于不同已知日期组件创建日期的示例。

    例如,该指南还展示了如何根据日期组件计算到相对于当前日期的下一个星期三。

    【讨论】:

      猜你喜欢
      • 2021-09-20
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 2016-09-29
      相关资源
      最近更新 更多