【问题标题】:How to get GMT time in milliseconds using boost Date_Time?如何使用 boost Date_Time 以毫秒为单位获取 GMT 时间?
【发布时间】:2011-06-22 12:19:57
【问题描述】:

有没有一种简单的方法可以从 boost Date_Time 库中获取当前的 GMT 时间(以毫秒为单位)?

这是一个使用 time_of_day 的示例,我不希望 time_of_day格林威治标准时间的总时间long long int

boost::posix_time::ptime time =
          boost::posix_time::microsec_clock::universal_time();
boost::posix_time::time_duration duration( time.time_of_day() );  // ???
long long int timeInMilliseconds = duration.total_milliseconds();

【问题讨论】:

    标签: c++ boost boost-date-time


    【解决方案1】:

    我看不到任何内置的东西,但像往常一样,实现起来很简单:

    boost::posix_time::time_duration::tick_type milliseconds_since_epoch()
    {
        using boost::gregorian::date;
        using boost::posix_time::ptime;
        using boost::posix_time::microsec_clock;
    
        static ptime const epoch(date(1970, 1, 1));
        return (microsec_clock::universal_time() - epoch).total_milliseconds();
    }
    

    【讨论】:

    • 这是一个明确的答案!但是你能建议一种从毫秒构建 Boost ptime 或 date 对象的方法吗?
    • @Caroline : ptime 有一个构造函数采用date 和一个time_duration,后者有一个命名构造函数milliseconds。为日期提供一个纪元并使用命名的构造函数,你应该被设置(除非你遇到解决问题)。
    【解决方案2】:

    使用 C++11,您可以

    //get current millisecond in epoch
    auto currentMillis = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count();
    
    //get crrent nanosecond in epoch
    auto currentNanos = std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::system_clock::now().time_since_epoch()).count();
    

    【讨论】:

    • 我知道这个问题是关于使用 Boost 的。但是,我来这里是为了解决标准问题,但没有找到。所以,发布我的发现作为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    相关资源
    最近更新 更多