Updated Boost datetime Examples Translated (markdown)

Howard Hinnant
2017-07-07 16:56:57 -04:00
parent e87e529a0a
commit 1c120715f3

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