Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa touch 在iOS中计算到给定时间点的时间_Cocoa Touch_Ios_Nsdate - Fatal编程技术网

Cocoa touch 在iOS中计算到给定时间点的时间

Cocoa touch 在iOS中计算到给定时间点的时间,cocoa-touch,ios,nsdate,Cocoa Touch,Ios,Nsdate,我想知道现在和下周三14:00之间的秒差 我发现[NSDate]提供了当前时间和日期,并且NSTimeInterval通常用于此目的(我想在其他地方使用此间隔,而其他地方需要一个NSTimeInterval),因此代码如下所示: NSDate *now = [NSDate date]; NSDate *nextWednesday = ???; // profit NSTimeInterval secondsUntilNextWednesday = [nextWednesday timeInter

我想知道现在和下周三14:00之间的秒差

我发现
[NSDate]
提供了当前时间和日期,并且
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;
}
-(NSTimeInterval)第二天到下两天
{
NSCalendar*日历=[NSCalendar currentCalendar];
NSDate*今天=[NSDate日期];
NSDateComponents*components=[日历组件:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit)fromDate:today];
//17==15:00(时区)
[组件设置小时:17];
[组件设置工作日:4];
NSDate*星期三=[calendar dateFromComponents:components];
NSTimeInterval secondsToWednesday=[星期三时间间隔起始日期:今天];
//如果secondsToWednesday为负数,则表示已经是星期三15:00(或16:00,取决于DST)
如果(第二个星期五<0)
{
secondsToWednesday+=604800;
}
星期三返回第二个仓库;
}

苹果提供了一个方便的指南,其中包含了所有你需要了解的关于日期的信息:日期

您可能想看看类
NSDateComponents
NSCalendar

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

该指南还显示了如何基于日期组件计算,以到达相对于当前日期的下一个星期三