Jak*_*oni 1 objective-c nsdate ios
在闰年,[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
Run Code Online (Sandbox Code Playgroud)
然后在将来的某个时刻进行比较以查看文件的上次修改时间:
// assume it's the next day at 9 AM, ie 2012-03-01 09:00 +0000
NSTimeInterval timeSinceLastModification = [fileModificationDate timeIntervalSinceNow];
Run Code Online (Sandbox Code Playgroud)
返回timeSinceLasModification将是积极的,表示未来的时间没有任何意义!
我的问题是:[NSDate date]用来获取当前日期实际上是不好的做法吗?我错过了一些重要的东西吗?
抱歉这个冗长的问题...
我不知道你在哪里有NSDate不支持闰日的想法,但这绝对是错误的.我相信你会感到困惑,因为现在GMT,日期字符串是2012-03-01 03:42:07 +0000.这是正确的.在GMT,它已经是3月1日.但是如果您要求当前区域设置中的日期(例如[[NSDate date] descriptionWithLocale:[NSLocale currentLocale]]),您将获得正确的闰日值.太平洋标准时间对我来说就是这样
2012年2月29日星期三下午7:42:46太平洋标准时间
请注意,NSDate它本身不是语言环境.我做的唯一更改是要求它使用当前语言环境而不是使用GMT返回字符串表示.我可以使用相同的日期对象并询问EST,它也会为我提供该时区的正确字符串.
| 归档时间: |
|
| 查看次数: |
690 次 |
| 最近记录: |