我正在使用以下代码来查找本地和UTC时间之间的差异:
using namespace boost::posix_time;
using namespace boost::gregorian;
time_duration UTC_Diff;
{
ptime someUTC_Time(date(2008, Jan, 1), time_duration(0, 0, 0, 0));
ptime someLocalTime = boost::date_time::c_local_adjustor::utc_to_local(someUTC_Time);
UTC_Diff = someLocalTime - someUTC_Time;
}
Run Code Online (Sandbox Code Playgroud)
既然你发现差异并不容易加速UTC时间.
如果您的local_date_time时区正确,则可以直接使用utc_time方法获取UTC时间.
看起来你有一些简单的ptime,你想解释为在给定的时区,然后将其转换为UTC,我使用这个构造函数
local_date_time(...)
Parameters:
date
time_duration
time_zone_ptr
bool
Run Code Online (Sandbox Code Playgroud)
根据文档,它重新解释给定时间数据在给定时区,这意味着它可以用于本地化任何给定的ptime,并且在utc_time可以使用该方法之后,这里是一个效用函数,用于将任何ptime从给定时区转换为UTC
ptime get_local_to_utc(const ptime& t, const time_zone_ptr& localtz){
if(t.is_not_a_date_time()) return t;
local_date_time lt(t.date(), t.time_of_day(), localtz, local_date_time::NOT_DATE_TIME_ON_ERROR);
return lt.utc_time();
}
Run Code Online (Sandbox Code Playgroud)