gpt4 book ai didi

c++ - boost 日期时间——输出格式

转载 作者:搜寻专家 更新时间:2023-10-31 00:35:42 25 4
gpt4 key购买 nike

假设我有以下代码:

#include <boost/date_time.hpp>

#include <iostream>
#include <locale>
#include <sstream>

int main()
{
boost::local_time::local_time_facet* facet = new boost::local_time::local_time_facet("%e %b %Y %T %q");
std::ostringstream date_osstr;
date_osstr.imbue(std::locale(date_osstr.getloc(), facet));
const boost::posix_time::ptime& now = boost::posix_time::second_clock::local_time();
date_osstr << now;

std::cout << date_osstr.str() << '\n';
}

我预计输出应具有以下格式:

1 Jul 2003 10:52:37 +0200

但输出格式如下:

2014-Apr-28 12:40:04

为什么?我究竟做错了什么?我该如何解决?

最佳答案

您需要实际使用 local_date_time 才能从 local_time_facet 中受益:

#include <boost/date_time.hpp>
#include <boost/date_time/local_time/local_time.hpp>

#include <iostream>
#include <locale>
#include <sstream>

using namespace boost;
static local_time::time_zone_ptr const utc_time_zone(new local_time::posix_time_zone("GMT"));

int main()
{
local_time::local_time_facet* facet = new local_time::local_time_facet("%e %b %Y %T %q");

posix_time::ptime my_ptime = posix_time::second_clock::universal_time();
local_time::local_date_time now(my_ptime, utc_time_zone);

std::ostringstream date_osstr;
date_osstr.imbue(std::locale(date_osstr.getloc(), facet));
date_osstr << now;

std::cout << date_osstr.str() << '\n';
}

打印

28 Apr 2014 12:59:01 +0000

查看 Live On Coliru

关于c++ - boost 日期时间——输出格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23341557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com