NSDate延迟date更改

这可能是一个简单的解决scheme,但有谁知道如何延迟午夜NSDate的变化? 任何见解将是非常有益的,谢谢!

编辑:我目前正在这样获取date,并显示基于当天的位置数据。 但是,非常像NSDate逻辑上应该工作,它切换到第二天午夜。 我希望date在凌晨三点改变,而不是在凌晨十二点。

NSDateFormatter *f = [[NSDateFormatter alloc] init]; [f setDateFormat:@"EEEE"]; today = [f stringFromDate:[NSDate date]]; 

我应该只使用时间,而不是使用NSDate? 对于iOS来说,我有点小气,所以任何见解都会有所帮助。 感谢您的回应。

我必须承认,我不明白你为什么要显示一个“错误”的星期几名称,但下面的代码应该做你想要的。 这只是实现你的任务的各种方法之一。

将date转换为“date组件”

 NSCalendar *cal = [NSCalendar currentCalendar]; NSUInteger unitFlags = NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit; NSDateComponents *comp = [cal components:unitFlags fromDate:[NSDate date]]; 

如有必要减去一天:

 if (comp.hour < 3) { comp.day -= 1; } 

将调整的组件转换回date:

 NSDate *adjustedDate = [cal dateFromComponents:comp]; 

您的原始代码,现在使用调整的date:

 NSDateFormatter *f = [[NSDateFormatter alloc] init]; [f setDateFormat:@"EEEE"]; NSString *today = [f stringFromDate:adjustedDate];