首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Boost Ptime转换为EST UTC-5:00

将Boost Ptime转换为EST UTC-5:00
EN

Stack Overflow用户
提问于 2013-04-09 09:32:14
回答 1查看 824关注 0票数 2

我使用以下代码来获取当前日期时间(Mountain time)

代码语言:javascript
复制
const boost::posix_time::ptime now = boost::posix_time::second_clock::local_time();

    //In mountain time I get now = 2013-Apr-08 20:44:22

现在,我使用以下方法进行转换

代码语言:javascript
复制
ptime FeedConnector::MountaintToEasternConversion(ptime coloTime) 
{

      return boost::date_time::local_adjustor <ptime, -5, us_dst>::utc_to_local(coloTime);
} 

//此函数假定为我提供以NewYork (东部标准时间)表示的时间,我将得到

代码语言:javascript
复制
2013-Apr-08 16:44:22

这个时间是错的,有什么建议我哪里错了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-09 15:32:54

据我所知,wrong time的意思是与预期相差一小时,即-4小时,而不是预期的-5小时。如果是,则问题是us_std类型被指向为local_adjustor声明的最后一个参数。如果要指定no_dst而不是use_dst。代码按照阐述的那样工作,相差-5个小时。下面的代码演示了它(link to online compiled version)

代码语言:javascript
复制
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/local_time_adjustor.hpp>
#include <iostream>

int main(void) {
   const boost::posix_time::ptime now = boost::posix_time::second_clock::local_time();
   const boost::posix_time::ptime adjUSDST = boost::date_time::local_adjustor<boost::posix_time::ptime, -5, boost::posix_time::us_dst>::utc_to_local(now);
   const boost::posix_time::ptime adjNODST = boost::date_time::local_adjustor<boost::posix_time::ptime, -5, boost::posix_time::no_dst>::utc_to_local(now);
   std::cout << "now: " << now << std::endl;
   std::cout << "adjUSDST: " << adjUSDST << std::endl;
   std::cout << "adjNODST: " << adjNODST << std::endl;
   return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15891845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档