2015-05-25 4 views
1

Каков наилучший способ конвертировать значения даты в UTC в миллисекундах?DateTime to UTC

Я искал std :: chrono и boost, не найдя на самом деле прагматичного способа выполнить это, любые идеи?

т.е.

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

опечатка: STD :: хористка – 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 

Update, чтобы соответствовать подписи:

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