0

用于在 iPhone 上进行时间间隔计算并查看一些组件值。

#define kSecondsInYear 31556926
#define kSecondsInMonth 2629744
#define kSecondsInDay 86400
#define kSecondsInHour 3600
#define kSecondsInMinute 60

我从谷歌的转换功能得到这些。我将月份中的秒数四舍五入到最接近的整数。

4

3 回答 3

1

一天有 86400 秒,当然除非是闰第二年,在这种情况下,某一天有 86401 秒。2008年就是这样的一年。

一年有 31556926 秒,除非是闰第二年,在这种情况下增加一秒。如果是闰年,增加一天的秒数。

正如 Sixfoottallrabbit 指出的那样,一个月的秒数取决于它是 28、29、30 还是 31 天的月份。

鉴于上述情况,我认为 Cocoa 不太可能为以下内容定义常量,但我可能错了,因为这只是一个猜测。

  • 一年的秒数
  • 一个月的秒数
  • 一天中的几秒钟
于 2009-08-06T11:47:29.967 回答
0

嗯,这是一年中 1/12 的秒数,不完全是一个月,因为不同的月份是不同的长度。这会导致您的应用程序出现问题吗?

于 2009-08-06T11:39:30.920 回答
0

在 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
于 2009-08-06T13:23:37.167 回答