Как я могу преобразовать между локальным и время UTC (в частности, от локального до UTC) использование boost::date_time
использование часового пояса существующей системы? Я знаю о boost::date_time::local_adjustor
, но это требует аргумента шаблона, который является зависимым от часового пояса смещением.
Сбой платформенно независимого способа сделать это, как я сделал бы это конкретно на Linux?
Как в стороне, как несуществующие моменты времени обрабатываются во время преобразования? Например, если день является одним часом, коротким из-за DST, и я пытаюсь преобразовать момент времени с недостающего часа, каково будет результирующее всемирное время?
Я использую следующий код, чтобы найти разницу между местным временем и временем в формате UTC:
using namespace boost::posix_time;
using namespace boost::gregorian;
time_duration UTC_Diff;
{
ptime someUTC_Time(date(2008, Jan, 1), time_duration(0, 0, 0, 0));
ptime someLocalTime = boost::date_time::c_local_adjustor::utc_to_local(someUTC_Time);
UTC_Diff = someLocalTime - someUTC_Time;
}
Поскольку вы обнаружите разницу, вычислить время в формате UTC непросто.