IAM总无奈完全以搞砸有关的NSDate类约Cococa的NSDate
IAM做一个日程安排应用程序,在那里你按日期
我只需要知道的时间表是2011年3月5日13时间表: 45(在每个时区),这就是它(如果你打开应用程序,当地时间是5.3.2011 13:40你会看到“在5分钟内”,不管你的时区是GMT + 5还是GMT + 8)。 ..
但由于NSDate存储了一个TIME MOMENT,而不是日期(作为类的名称状态),iam遇到几个问题
1)NSDate不存储它保存的时区,这意味着如果我有一个日期 5.3.2011 13:45我不知道它是否是GMT0,或它在GMT + 1(比在当地时间它的5.3.2011 14:45)
2)我不能比较,如果两个NSDates是在同一天(如9月7日),因为他们可以在不同的时区(由于日期代表时间的时刻,在一个区域中,这个时刻对应于一天,在另一个时区到另一个时区)
该怎么办?
我发现,因为它们使用
NSTimeZone *tz = [NSTimeZone defaultTimeZone];
NSInteger seconds = -[tz secondsFromGMTForDate: self];
这意味着日期已经被保存在defaultTimezone按预期
像
-(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];
}
但方法都不起作用努力工作
什么不按预期与他们工作? – 2012-03-16 15:05:54
,因为他们使用NSTimeZone * tz = [NSTimeZone defaultTimeZone]; NSInteger秒= - [tz secondsFromGMTForDate:self];这意味着日期必须保存在defaultTimezone才能正确工作 – 2012-03-16 15:08:05
听起来像你还没有发现['NSCalendar'](http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation /Classes/NSCalendar_Class/Reference/NSCalendar.html)。 – 2012-03-16 22:43:09