fork download
  1. #include <iostream>
  2. #include <sstream>
  3. #include <ctime>
  4. //#include <codecvt>
  5. #include <iomanip>
  6. #include <locale>
  7. #include <boost/date_time.hpp>
  8. //using namespace std;
  9.  
  10. std::string DateToString(const boost::gregorian::date& date)
  11. {
  12. std::tm tm = to_tm(date);
  13.  
  14. std::ostringstream stream;
  15. //stream.imbue(std::locale("en_us.utf-8"));
  16. stream.imbue(std::locale(""));
  17.  
  18. stream << std::put_time(&tm, "%x");
  19.  
  20. std::cout << stream.str() << '\n';
  21.  
  22. return stream.str();
  23. }
  24.  
  25.  
  26. boost::gregorian::date StringToDate(const std::string& string)
  27. {
  28. std::istringstream stream(string);
  29. //stream.imbue(std::locale("en_us.utf-8"));
  30. stream.imbue(std::locale(""));
  31.  
  32. std::tm tm = {};
  33. stream >> std::get_time(&tm, "%x");
  34.  
  35. boost::gregorian::date ret;
  36.  
  37. if (!stream.fail())
  38. {
  39. ret = boost::gregorian::date_from_tm(tm);
  40. }
  41. else
  42. {
  43. ret = boost::gregorian::date(boost::gregorian::not_a_date_time);
  44. }
  45.  
  46. return ret;
  47. }
  48.  
  49. int main()
  50. {
  51. boost::gregorian::date today(2020, 2, 9);
  52.  
  53. std::string todayString = DateToString(today);
  54. auto todayFromString = StringToDate(todayString);
  55. DateToString(todayFromString);
  56.  
  57. auto yesterdayFromString = StringToDate("01/09/2020");
  58. DateToString(yesterdayFromString);
  59.  
  60. return 0;
  61. }
Success #stdin #stdout 0s 4392KB
stdin
Standard input is empty
stdout
02/09/2020
02/09/2020
01/09/2020