2009-08-06 5 views
0

Для работы с расчетами временных интервалов на iPhone и просмотра некоторых значений компонентов.Является ли этот набор констант времени правильным или есть лучший встроенный источник в Cocoa

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

Я получил это от функции преобразования Google. Я округлял секунды в месяц до ближайшего int.

ответ

0

Способ обрабатывать вычисления интервала времени в Какао с NSDateComponents. Документы покрывают эту скважину в Calendrical Calculations. Выполнение этого способа позволяет справиться с большинством проблем, связанных с летней экономией, которые могут вызывать расчеты по дате расчёта и устранять необходимость наличия констант для всех этих разных единиц. Если вы все еще нуждаетесь в них, лучший способ получить их - попросить NSCalendar. Например:

NSRange r = [[NSCalendar currentCalendar] rangeOfUnit:NSSecondCalendarUnit 
              inUnit:NSYearCalendarUnit 
              forDate:[NSDate date]]; 
NSUInteger secondsInThisYear = r.length; // Does not include leap seconds 
0

Ну, это количество секунд в 1/12 года, а не ровно месяц, так как разные месяцы различной длины. Это вызовет проблему в вашем приложении?

+0

До тех пор, пока ошибка меньше, чем за 2 часа за последние 70 лет, я в порядке. – willc2

1

Есть 86400 секунд в день, если, конечно, это leap second year, и в этом случае 86401 секунд в течение одного дня. 2008 год был таким годом.

Есть 31556926 секунд в году, если это не скачок второго года, и в этом случае добавьте одну секунду. Если это високосный год, добавьте количество секунд в день.

И, как указано в шестью точками, количество секунд в месяц варьируется в зависимости от того, является ли это 28,29,30 или 31-дневным месяцем.

Учитывая вышеизложенное, я думаю, что маловероятно, что Какао определит константы для следующего, но я могу ошибаться, поскольку это всего лишь предположение.

  • секунд в год
  • секунд в месяц
  • секунд в день