用于在 iPhone 上进行时间间隔计算并查看一些组件值。
#define kSecondsInYear 31556926
#define kSecondsInMonth 2629744
#define kSecondsInDay 86400
#define kSecondsInHour 3600
#define kSecondsInMinute 60
我从谷歌的转换功能得到这些。我将月份中的秒数四舍五入到最接近的整数。
用于在 iPhone 上进行时间间隔计算并查看一些组件值。
#define kSecondsInYear 31556926
#define kSecondsInMonth 2629744
#define kSecondsInDay 86400
#define kSecondsInHour 3600
#define kSecondsInMinute 60
我从谷歌的转换功能得到这些。我将月份中的秒数四舍五入到最接近的整数。
一天有 86400 秒,当然除非是闰第二年,在这种情况下,某一天有 86401 秒。2008年就是这样的一年。
一年有 31556926 秒,除非是闰第二年,在这种情况下增加一秒。如果是闰年,增加一天的秒数。
正如 Sixfoottallrabbit 指出的那样,一个月的秒数取决于它是 28、29、30 还是 31 天的月份。
鉴于上述情况,我认为 Cocoa 不太可能为以下内容定义常量,但我可能错了,因为这只是一个猜测。
嗯,这是一年中 1/12 的秒数,不完全是一个月,因为不同的月份是不同的长度。这会导致您的应用程序出现问题吗?
在 Cocoa 中处理时间间隔计算的方法是使用NSDateComponents
. 文档在Calendrical Calculations中很好地涵盖了这一点。这样做可以处理大多数可能困扰日期计算的夏令时问题,并且应该避免为所有这些不同的单位设置常量。如果您仍然需要它们,获得它们的最佳方法是询问NSCalendar
。例如:
NSRange r = [[NSCalendar currentCalendar] rangeOfUnit:NSSecondCalendarUnit
inUnit:NSYearCalendarUnit
forDate:[NSDate date]];
NSUInteger secondsInThisYear = r.length; // Does not include leap seconds