Это смущает, но мне трудно делать простые манипуляции с датами.Как управлять датами/датами в C++ 11?
Это версия C#, которую я в основном стараюсь использовать с помощью C++ 11;
DateTime date1=new DateTime(4,5,2012);
DateTime date2=new DateTIme(7,8,2013);
int day1=date1.Days;
TimeSpan ts=d2-d1;
int diffDays=ts.Days;
Что я попробовал?
std::tm tm;
tm.tm_year=113;
tm.tm_mon=0;
tm.tm_wday=0;
std::time_t tt=mktime(&tm);
std::chrono::system_clock::time_point then = std::chrono::system_clock::from_time_t(tt);
std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
auto e1 = std::chrono::duration_cast<std::chrono::hours>(now - then).count();
Величина e1 (379218) не имеет значения, что так когда-либо.
Я взглянул на хронограф, который представлен как стандартная библиотека C++ 11 для datetime, но я просто не мог найти пример того, как создать дату с int year = 2012, int month = 2, int день = 14.
PS: Хроно достаточно для обработки даты/времени/часовых поясов в C++ 11? Есть ли потребность в time.h?
'' имеет дело со временем, но это не касается календарей, которые вы ищете (кроме преобразования из 'time_t'). Я еще не знаю каких-либо библиотек календарей, построенных поверх ''. –
Для обработки дат существует отличная библиотека 'boost gregorian': http://www.boost.org/doc/libs/1_39_0/doc/html/date_time/gregorian.html. Кроме того, QT имеет собственные классы дат. – decden
В дополнение к хорошему предложению использовать библиотеку boost, вы можете попробовать мою библиотеку дат, описанную в этом SO-ответе: http://stackoverflow.com/a/15146434/576911. Вот прямая ссылка на него: http://home.roadrunner.com/~hinnant/bloomington/date.html –