1

我如何计算今天的 NSTimeInterval 时分秒为零?

我知道今天的 NSTimeInterval 是这样的:

NSTimeInterval  today = [[NSDate date] timeIntervalSince1970];

但我怎样才能重置时间?

4

3 回答 3

2
NSDate *currentDate = [NSDate date];
NSDateComponents *currentDateComponents = [calendar components:NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:currentDate];
NSDateComponents *currentDateToMidnight = [[NSDateComponents alloc] init];
[currentDateToMidnight setHour:-[currentDateComponents hour]];
[currentDateToMidnight setMinute:-[currentDateComponents minute]];
[currentDateToMidnight setSecond:-[currentDateComponents second]];
NSDate *midnight = [calendar dateByAddingComponents:currentDateToMidnight toDate:currentDate options:0];
NSTimeInterval todayTimeInterval = [midnight timeIntervalSince1970];
于 2013-05-19T11:47:58.893 回答
0

您只需要使用NSDateComponents获取今天的年、月和日,然后您可以从中创建一个日期,该日期将在午夜。

于 2013-05-19T11:48:14.440 回答
0

一旦你调用NSTimeIntervalnow以下函数:

inline NSTimeInterval trimTimeInterval(NSTimeInterval interval)
{
    static NSTimeInterval const day = 3600 * 24;
    return day * floor(interval / day);
}

首先我们计算整数天的数量,interval然后返回相同的值,但时间元素除外。

但是请注意,此代码不会考虑时区。因此,对于 GMT+N>0,您可能会以 5 月 23 日而不是 5 月 24 日结束。

于 2015-03-27T11:51:44.160 回答