Член структуры C ++, какого типа хранить календарное время на iPhone? - PullRequest
1 голос
/ 22 мая 2009

Мне нужно хранить datetime в структуре C ++ для приложения iPhone. Время будет сохранено и восстановлено в sqlite db. Каков наилучший тип данных и соответствующий API для этого? Мои кандидаты:

  1. time_t и структура tm из <ctime> и <time.h>
  2. NSTimeInterval от <NSDate.h>
  3. TimeValue из API QuickTime

Мой инстинкт - использовать хорошие ole 'C / C ++ типы из <time.h>. Какие-нибудь недостатки в будущем? Любой другой тип времени, который я пропускаю, который является дорогим iPhone SDK?

Ответы [ 2 ]

3 голосов
/ 22 мая 2009

NSTimeInterval и его аналог CoreFoundation CFAbsoluteTime являются лучшими значениями для использования, поскольку они включают точность до миллисекунды (это значения с плавающей точкой двойной точности). time_t и struct tm действительно используются только в определенных API BSD (и struct timeval или struct timespec более распространены там). TimeValue используется только для представления значений и интервалов в медиафайле и обычно основывается на настраиваемой временной базе.

1 голос
/ 23 мая 2009

Это полностью зависит от того, для чего вы используете время.

  • Какая точность вам нужна?
  • Сколько будет храниться? (В среднем / наихудшем случае)

Храните столько точности, сколько вам нужно, но не более. (Но также подумайте о будущих потребностях). Вы не экономите время встреч до ближайшей наносекунды - это не имеет смысла. Однако, если вы записываете какой-то тип данных, где очень малые интервалы важны, вы можете сохранить их с точностью системных часов (часто до 100 наносекунд), или даже чуть точнее, чем для будущих версий с лучшими тактовыми частотами. .

Если вы храните только небольшие числа (скажем, менее нескольких тысяч), то размер хранилища и скорость доступа, вероятно, не имеют значения. Если вы храните много записей, размер записей может стать важным.

Помимо вышеперечисленных соображений, это на самом деле не имеет значения; до тех пор, пока это четко задокументировано.

Я не знаком с базой данных sqlite. Есть ли у него какой-либо тип даты / времени? Если это так, то это, вероятно, самое простое - если оно соответствует вашим требованиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...