Cocoa touch 在iOS中计算到给定时间点的时间
我想知道现在和下周三14:00之间的秒差 我发现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
[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
有关基于不同已知日期组件创建日期的示例,请参见指南中的日历、日期组件和日历单位>从组件创建日期
该指南还显示了如何基于日期组件计算,以到达相对于当前日期的下一个星期三