Как преобразовать между местным и всемирным временем с помощью повышения:: date_time?

Как я могу преобразовать между локальным и время UTC (в частности, от локального до UTC) использование boost::date_time использование часового пояса существующей системы? Я знаю о boost::date_time::local_adjustor, но это требует аргумента шаблона, который является зависимым от часового пояса смещением.

Сбой платформенно независимого способа сделать это, как я сделал бы это конкретно на Linux?

Как в стороне, как несуществующие моменты времени обрабатываются во время преобразования? Например, если день является одним часом, коротким из-за DST, и я пытаюсь преобразовать момент времени с недостающего часа, каково будет результирующее всемирное время?

11
задан Magnus Hoff 4 October 2010 в 08:39
поделиться

1 ответ

Я использую следующий код, чтобы найти разницу между местным временем и временем в формате 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 непросто.

7
ответ дан 3 December 2019 в 07:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: