这可能是一个简单的解决方案,但是有谁知道如何延迟NSDate在午夜过后的变化?任何见解都会非常有用,谢谢!
修改 我目前正在以这种方式获取日期并显示基于当天的位置数据。但是,就像NSDate在逻辑上应该工作一样,它会在午夜切换到第二天。我希望日期在凌晨3点而不是在凌晨12点更改。
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"EEEE"];
today = [f stringFromDate:[NSDate date]];
我应该只使用时间而不是使用NSDate吗?我对iOS来说是一个菜鸟,所以任何见解都会有所帮助。感谢您的回复。
答案 0 :(得分: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];