2015-05-25 40 views
1

以毫秒为单位将日期时间值转换为UTC的正确方法是什么?DateTime to UTC

我一直在寻找到std :: chrono和提升没有真正找到一个实用的方法来完成这一点,任何想法?

auto local_time_to_utc_milliseconds(int year, int month, int day, int hour, int minute, int second, int millisecond) -> std::uint64_t 
{ 
    return ???; 
} 
+0

错字:性病::歌舞团女队员 – simon

回答

1

假设你因为 “历元”(或一些公知的时间点)的平均毫秒:

Live On Coliru

例如
#include <boost/date_time/posix_time/posix_time.hpp> 
#include <iostream> 

int main() { 
    static const boost::posix_time::ptime epoch { { 1970, 1, 1 }, {} }; 

    auto now = boost::posix_time::microsec_clock::universal_time(); 

    std::cout << "Time in milliseconds since 1970: " << (now-epoch).total_milliseconds() << "\n"; 
} 

打印

Time in milliseconds since 1970: 1432566946471 

更新,以配合您的签名:

auto local_time_to_utc_milliseconds(boost::posix_time::ptime& dt) -> std::uint64_t 
{ 
    static const boost::posix_time::ptime epoch { { 1970, 1, 1 }, {} }; 
    return (dt - epoch).total_milliseconds(); 
} 

auto local_time_to_utc_milliseconds(int year, int month, int day, int hour, int minute, int second, int millisecond) -> std::uint64_t 
{ 
    return local_time_to_utc_milliseconds(boost::posix_time::ptime { { year, month, day }, { hour, minute, second, millisecond } }); 
} 
+0

的ptime :: total_milliseconds不存在? – ronag

+0

@ronag号是否必须?文档:http://www.boost.org/doc/libs/1_58_0/doc/html/date_time/posix_time.html#time_duration_constr – sehe

+0

当然不是。只是暂时的困惑。谢谢! – ronag