Если вы пишете библиотеку, а значение datetime будет представлено через API, тогда я бы использовал time_t
, чтобы пользователи библиотеки не были вынуждены использовать Boost.
Как было указано, struct tm
используется для форматирования time_t
. Обычно вы не хотите обгонять их.
Если ваша программа уже использует Boost, и вам нравится удобство Boost.DateTime, то обязательно используйте Boost.DateTime. Если я правильно помню, boost::posix_time::ptime
- это просто обертка вокруг двух 64-разрядных целых чисел, поэтому он достаточно легкий, чтобы обойти его по значению.
Если вы используете функции C ++ 11, вы можете использовать std::chrono::time_point
из <chrono>
. Если вы все еще на C ++ 03, вы можете использовать Boost.Chrono , который предназначен для реализации временных возможностей C ++ 11. Используя Boost.Chrono, вы сможете легче переключаться на C ++ 11 в будущем. Chrono не обладает таким количеством функций, как Boost.DateTime, но это шаг вперед по сравнению с простым старым time_t
.
Если вам нужна точность менее секунды, тогда лучше использовать Boost.DateTime или Chrono.