Ввод: строки с датой и необязательным временем. Различные представления были бы хорошими, но необходимыми. Строки поставляются пользователем и могут быть искажены. Примеры:
-
"2004-03-21 12:45:33"
(я считаю это макет по умолчанию) -
"2004/03/21 12:45:33"
(необязательный макет) -
"23.09.2004 04:12:21"
(немецкий формат, необязательный) -
"2003-02-11"
(время может отсутствовать)
Необходимый результат: секунды с эпохи (1970/01/01 00:00:00) или другая фиксированная точка.
Бонус. Кроме того, чтение UTC-смещения локального системного времени было бы большим.
Предполагается, что ввод считается местным временем на рассматриваемой машине. Выход должен быть UTC. Система - только Linux (нужны Debian Lenny и Ubuntu).
Я попытался использовать boost/date_time
, но должен признать, что я не могу обернуть голову вокруг документации. Следующие работы без необходимого преобразования из локального времени системы в UTC:
std::string date = "2000-01-01";
boost::posix_time::ptime ptimedate = boost::posix_time::time_from_string(date);
ptimedate += boost::posix_time::hours(Hardcoded_UTC_Offset);// where to get from?
struct tm = boost::posix_time::to_tm(ptimedate);
int64_t ticks = mktime(&mTmTime);
Я думаю, что boost::date_time
может обеспечить необходимое смещение UTC, но я не знаю, как это сделать.