我想知道现在和下周三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;
}
答案 0 :(得分:1)
Apple提供了一本方便的指南,其中包含您需要了解的所有日期:Date and Time Programming Guide
您可能希望查看课程NSDateComponents
和NSCalendar
。
参见日历,日期组件和日历单元&gt;在指南中创建组件的日期,以获取基于不同已知日期组件创建日期的示例。
该指南还显示了如何根据日期组件进行计算,以获得相对于当前日期的下一个星期三。