我想在我的代碼中處理日期和時間,並且已經指向了boost庫的方向 - 特別是boost :: locale :: date_time(部分原因是這允許我避免夏令時奇怪使我以前的實施困難)。boost :: locale :: date_time:如何從Boost C++中的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。假設我有整數(而不是字符串)格式的所有相關數據,是否有明確設置日期時間的更好方法(例如,至2016年12月19日)?
好了,你沒有* *添加12個月的時間.... – Xirema
你有沒有考慮[霍華德Hinnant(欣南特)的日期/時間庫(https://howardhinnant.github.io/date/date.html )? 'static_assert(2016_y/12/19 + months {12} == 2017_y/12/19,「」);' –