如果今天是5月6日星期二下午2点
event.startDate = [[NSDate alloc] init];
event.allDay = YES;
[dateFormat setDateFormat:EEEE, MMMM dd, yyyy];
NSString* dayStr = [dateFormat stringFromDate:event.startDate];
timeDetails.text = [NSString stringWithFormat:@"%@\nAll day", dayStr];
Run Code Online (Sandbox Code Playgroud)
结果于5月5日星期一
没有allDay设置的相同代码
event.startDate = [[NSDate alloc] init];
[dateFormat setDateFormat:EEEE, MMMM dd, yyyy];
NSString* dayStr = [dateFormat stringFromDate:event.startDate];
timeDetails.text = [NSString stringWithFormat:@"%@\nAll day", dayStr];
Run Code Online (Sandbox Code Playgroud)
结果在5月6日星期二这是正确的.有人有任何线索吗?
小智 8
背景
在iOS中,所有日期都有时间组件.因此,对于一整天的活动,仍然会使用一些时间.通常这是午夜到"午夜之前"(23:59),这个事件的时间跨度将近24小时.
时区和夏令时带来了挑战.这可能意味着全天活动从前一天晚上11点开始,到22:59结束.这一切都取决于您从哪里查看事件.不幸的是,在iOS开发中,这往往不明确!我有一些非常"有趣"的错误,只有在晚上11点到午夜之前运行应用程序时才能实现.
固定
令人惊讶的是,EKEvent的行为会根据您设置属性的顺序而改变.如果在设置startDate 之前设置event.allDay = YES ,那么您将获得您期望的行为.
| 归档时间: |
|
| 查看次数: |
915 次 |
| 最近记录: |