【发布时间】:2012-03-19 14:20:56
【问题描述】:
在闰年,[NSDate date] 返回2012-03-01 HH:MM:SS +TTTT。
在 stackoverflow 上,我经常看到通过简单地调用 [NSDate date] 来检索今天日期的帖子。问题是在闰年这不会返回正确的日期。现在我明白闰年实际上是日历系统的函数,所以NSDate 不会识别闰年(或夏时制)是有道理的。但是,这有可能破坏代码 - 例如:
假设您通过以下方式指定文件修改日期:
// assume today's date is 2012-02-29 10:00:00 +0000
NSDate *fileModificationDate = [NSDate date]; // 2012-03-01 10:00:00 +0000 is returned
然后在将来的某个时间进行比较以查看文件上次修改的时间:
// assume it's the next day at 9 AM, ie 2012-03-01 09:00 +0000
NSTimeInterval timeSinceLastModification = [fileModificationDate timeIntervalSinceNow];
返回的timeSinceLasModification 将是正数,表示未来的某个时间没有意义!
我的问题是:使用[NSDate date] 获取当前日期实际上是不好的做法吗?我在这里遗漏了什么重要的东西吗?
抱歉这个冗长的问题...
【问题讨论】:
-
无复制。通过
NSLog打印[NSDate date]对我来说一整天都是2/29。你的时区是什么时候?你是如何显示日期的?
标签: objective-c ios nsdate