我完全搞砸了 NSDate 课程
我正在做一个调度应用程序,您可以在其中按日期进行调度
我只需要知道时间表是 5.3.2011 13:45(在每个时区),仅此而已(如果您打开应用程序并且当地时间是 5.3.2011 13:40,您会看到“5 分钟内”不无论您的时区是 GMT+5 还是 GMT+8)...
但由于 NSDate 存储的是 TIME MOMENT,而不是日期(如班级名称所述),我遇到了几个问题
1) NSDate 不存储保存它的时区,这意味着如果我有一个日期 5.3.2011 13:45 我不知道它是 GMT0 还是它在 GMT +1 中(而不是在当地时间5.3.2011 14:45)
2)我无法比较两个 NSDate 是否在同一天(如 9 月 7 日),因为它们可以在不同的时区(因为日期代表一个时间点,在一个区域中,这个时间点对应于一天,在另一个时区到另一个)
该怎么办?
我找到了类似的方法
-(NSDate *) dateToLocalTime
{
NSTimeZone *tz = [NSTimeZone defaultTimeZone];
NSInteger seconds = [tz secondsFromGMTForDate: self];
return [NSDate dateWithTimeInterval: seconds sinceDate: self];
}
-(NSDate *) dateToGlobalTime
{
NSTimeZone *tz = [NSTimeZone defaultTimeZone];
NSInteger seconds = -[tz secondsFromGMTForDate: self];
return [NSDate dateWithTimeInterval: seconds sinceDate: self];
}
但它没有按预期工作
因为他们使用
NSTimeZone *tz = [NSTimeZone defaultTimeZone];
NSInteger seconds = -[tz secondsFromGMTForDate: self];
这意味着必须将日期保存在 defaultTimezone 才能正常工作