7 const clock_type::time_point& t) {
9 stream << std::chrono::duration_cast<std::chrono::duration<double>>(t.time_since_epoch()).count();
13 const clock_type::duration& dt) {
15 stream << std::chrono::duration_cast<std::chrono::duration<double>>(dt).count();
19 int main(
int argc,
const char* argv[]) {
26 "timestamp read format",
27 "%Y-%m-%d_%H:%M:%S%z");
29 "timestamp write format",
30 "%Y-%m-%d_%H:%M:%S%z");
32 auto strings = parser.fParse(argc, argv);
36 std::cout << std::chrono::duration_cast<std::chrono::seconds>(t.time_since_epoch()).count() <<
"\n";
38 std::cout <<
" t is " << t <<
"\n";
43 std::cout << std::chrono::duration_cast<std::chrono::seconds>(d).count() <<
"\n";
45 std::cout <<
"dt is " << d <<
"\n";
49 for (
const auto&
string : strings) {
52 strptime(
string.c_str(), readFormat.c_str(), &tmStruct);
53 auto ts = clock_type::time_point(std::chrono::duration_cast<clock_type::duration>(std::chrono::duration<double>(mktime(&tmStruct))));
54 if (readFormat.back() ==
'z') {
55 auto tzStart=
string.find_last_of(
"+-");
56 if (tzStart != std::string::npos) {
57 auto offset = std::stoi(
string.substr(tzStart));
58 ts -= std::chrono::hours(offset/100);
59 ts -= std::chrono::minutes(offset%100);
63 std::cout << std::chrono::duration_cast<std::chrono::seconds>(ts.time_since_epoch()).count() <<
"\n";
65 std::cout <<
"\"" <<
string <<
"\" as time: " << ts <<
"\n";