我正在使用 boost::date_time 并且我得到了一个 time_t,它是由一个库使用 C 标准库中的 time() 函数生成的。
我正在寻找一种从那个 time_t 获取本地时间的方法。我正在阅读文档,如果不提供时区就找不到任何方法,我不知道,因为它取决于机器的语言环境,我找不到任何方法从中获取.
我错过了什么?
我正在使用 boost::date_time 并且我得到了一个 time_t,它是由一个库使用 C 标准库中的 time() 函数生成的。
我正在寻找一种从那个 time_t 获取本地时间的方法。我正在阅读文档,如果不提供时区就找不到任何方法,我不知道,因为它取决于机器的语言环境,我找不到任何方法从中获取.
我错过了什么?
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;
}
对于此任务,我将忽略boost::date_time
并仅使用标准库中的localtime
(或localtime_r
,如果可用)。