#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;
}