1

私はboost::date_timeを使用しており、C標準ライブラリのtime()関数を使用してライブラリによって生成されたtime_tを取得しました。

そのtime_tから現地時間を取得する方法を探しています。私はドキュメントを読んでいますが、マシンのロケールに依存しているためわからないタイムゾーンを提供せずにこれを行う方法を見つけることができず、そこからタイムゾーンを取得する方法が見つかりません.

私は何が欠けていますか?

4

2 に答える 2

13

boost::posix_time::from_time_t()

#include <ctime>
#include <ostream>
#include <iostream>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/local_time_adjustor.hpp>
#include <boost/date_time/c_local_time_adjustor.hpp>

boost::posix_time::ptime local_ptime_from_utc_time_t(std::time_t const t)
{
    using boost::date_time::c_local_adjustor;
    using boost::posix_time::from_time_t;
    using boost::posix_time::ptime;
    return c_local_adjustor<ptime>::utc_to_local(from_time_t(t));
}

int main()
{
    using boost::posix_time::to_simple_string;
    using boost::posix_time::from_time_t;

    std::time_t t;
    std::time(&t); // initalize t as appropriate
    std::cout
        << "utc:   "
        << to_simple_string(from_time_t(t))
        << "\nlocal: "
        << to_simple_string(local_ptime_from_utc_time_t(t))
        << std::endl;
}
于 2011-05-26T18:59:22.727 に答える
0

このタスクでは、標準ライブラリの(または、利用可能な場合は) を無視boost::date_timeして使用します。localtimelocaltime_r

于 2011-05-26T18:53:16.513 に答える