diff --git a/Boost-datetime-Examples-Translated.md b/Boost-datetime-Examples-Translated.md index 4c8ea23..9db2f12 100644 --- a/Boost-datetime-Examples-Translated.md +++ b/Boost-datetime-Examples-Translated.md @@ -72,47 +72,38 @@ main() ``` ### Days Alive +```c++ +#include "tz.h" +#include - #include "date.h" - #include "tz.h" - #include - #include - - int - main() +int +main() +{ + std::string s; + std::cout << "Enter birth day YYYY-MM-DD (eg: 2002-02-01): "; + try { - std::string s; - std::cout << "Enter birth day YYYY-MM-DD (eg: 2002-02-01): "; - std::cin >> s; - try - { - using namespace std::chrono; - using namespace date; - std::istringstream in(s); - in.exceptions(std::ios::failbit); - int y, m, day; - char dash; - in >> y >> dash >> m >> dash >> day; - auto d = year(y)/m/day; - if (!d.ok()) - throw std::exception{}; - auto birthday = local_days{d}; - auto today = floor(current_zone()->to_local(system_clock::now())); - auto days_alive = today - birthday; - if (days_alive == days{1}) - std::cout << "Born yesterday, very funny\n"; - else if (days_alive < days{0}) - std::cout << "Not born yet, hmm: " << days_alive.count() - << " days\n"; - else - std::cout << "Days alive: " << days_alive.count() << '\n'; - } - catch (...) - { - std::cout << "Bad date entered: " << s << '\n'; - } + using namespace std::chrono; + using namespace date; + std::cin.exceptions(std::ios::failbit); + local_days d; + std::cin >> parse("%F", d); + auto today = make_zoned(current_zone(), system_clock::now()); + auto days_alive = floor(today.get_local_time() - d); + if (days_alive == days{1}) + std::cout << "Born yesterday, very funny\n"; + else if (days_alive < days{0}) + std::cout << "Not born yet, hmm: " << days_alive.count() + << " days\n"; + else + std::cout << "Days alive: " << days_alive.count() << '\n'; } - + catch (...) + { + std::cout << "Bad date entered\n"; + } +} +``` ### Days Between New Years