1

这可能是一个简单的解决方案,但有谁知道如何将 NSDate 更改延迟到午夜之后?任何见解都会非常有帮助,谢谢!

编辑: 我目前正在以这种方式获取日期并显示基于那天的位置数据。但是,就像 NSDate 在逻辑上应该工作一样,它会在午夜切换到第二天。我希望在凌晨 3 点而不是 12 点更改日期。

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

我应该只使用时间而不是使用 NSDate 吗?我对 iOS 有点陌生,所以任何见解都会有所帮助。感谢您的回复。

4

1 回答 1

2

我必须承认,我还不明白您为什么要显示“错误”的工作日名称,但下面的代码应该可以满足您的需求。这只是完成任务的各种方法之一。

将日期转换为“日期组件:”

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;
}

将调整后的组件转换回最新状态:

NSDate *adjustedDate = [cal dateFromComponents:comp];

您的原始代码,现在使用调整后的日期:

NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"EEEE"];
NSString *today = [f stringFromDate:adjustedDate];
于 2013-11-03T16:35:19.900 回答