#include <iostream>
#include <sstream>
#include <ctime>
//#include <codecvt>
#include <iomanip>
#include <locale>
#include <boost/date_time.hpp>
//using namespace std;
std::string DateToString(const boost::gregorian::date& date)
{
std::tm tm = to_tm(date);
std::ostringstream stream;
//stream.imbue(std::locale("en_us.utf-8"));
stream.imbue(std::locale(""));
stream << std::put_time(&tm, "%x");
std::cout << stream.str() << '\n';
return stream.str();
}
boost::gregorian::date StringToDate(const std::string& string)
{
std::istringstream stream(string);
//stream.imbue(std::locale("en_us.utf-8"));
stream.imbue(std::locale(""));
std::tm tm = {};
stream >> std::get_time(&tm, "%x");
boost::gregorian::date ret;
if (!stream.fail())
{
ret = boost::gregorian::date_from_tm(tm);
}
else
{
ret = boost::gregorian::date(boost::gregorian::not_a_date_time);
}
return ret;
}
int main()
{
boost::gregorian::date today(2020, 2, 9);
std::string todayString = DateToString(today);
auto todayFromString = StringToDate(todayString);
DateToString(todayFromString);
auto yesterdayFromString = StringToDate("01/09/2020");
DateToString(yesterdayFromString);
return 0;
}