【发布时间】: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