gpt4 book ai didi

c++ - boost::locale::date_time:如何从 Boost C++ 中的 date_time 对象获取数据?

转载 作者:行者123 更新时间:2023-11-28 05:05:47 25 4
gpt4 key购买 nike

我正在尝试在我的代码中处理日期和时间,并且已指向 boost 库的方向 - 具体来说,boost::locale::date_time(部分原因是这让我避免了夏令时的怪异使我之前的实现变得困难)。

但是,我得到的结果不一致。当我将日期存储在 date_time 对象中并稍后尝试从中获取数据时,它是不正确的。这是一个例子:

#include <boost\\asio\\error.hpp>
#include <boost\\locale.hpp>
using namespace std;

int main()
{
// Necessary to avoid bad_cast exception - system default should be fine
boost::locale::generator gen;
std::locale::global(gen(""));

// Create date_time of 12/19/2016
boost::locale::date_time dt = boost::locale::period::year(2016) + boost::locale::period::month(12) + boost::locale::period::day(19);

unsigned int month = dt.get(boost::locale::period::month());
unsigned int day = dt.get(boost::locale::period::day());
unsigned int year = dt.get(boost::locale::period::year());

cout << month << "/" << day << "/" << year << endl;

// Expected output: 12/19/2016
// Actual output: 0/19/2017
}

我做错了什么?我只想提取保存的天数、月数、年数、小时数等。

谢谢。

编辑:我最初可能以不正确的方式设置了 date_time。假设我拥有整数(非字符串)格式的所有相关数据,是否有更好的方法来显式设置日期时间(例如,设置为 12-19-2016)?

最佳答案

2016-04-05 + 12 个月 = 2017-04-05。这是有道理的,因为 12 个月是一整年。

尝试添加 11 个月,然后递增以从基于 0 的月份调整为基于 1 的月份。

boost::locale::date_time dt = boost::locale::period::year(2016) + boost::locale::period::month(11) + boost::locale::period::day(19);

uint month = dt.get(boost::locale::period::month()) + 1;
uint day = dt.get(boost::locale::period::day());
uint year = dt.get(boost::locale::period::year());

cout << month << "/" << day << "/" << year << endl;

关于c++ - boost::locale::date_time:如何从 Boost C++ 中的 date_time 对象获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44811815/

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