julian
This is a Julian calendar in the style of date.h. Everything is the same here as for date.h, except that the calendrical arithmetic implements a proleptic Julian calendar.
The julian
calendar can interoperate with
date.h and tz.h just by
paying attention to the namespace. For example to convert the civil
date 2016_y/jun/26
to a julian date, just do:
#include "julian.h" #include <iostream> int main() { using namespace date::literals; std::cout << julian::year_month_day{2016_y/jun/26} << '\n'; }
This outputs:
2016-06-13
And here is the reverse conversion:
#include "julian.h" #include <iostream> int main() { using namespace julian::literals; std::cout << date::year_month_day{2016_y/jun/13} << '\n'; }
Which outputs:
2016-06-26
You can even convert directly to the ISO-week-based calendar:
#include "iso_week.h" #include "julian.h" #include <iostream> int main() { using namespace julian::literals; std::cout << iso_week::year_weeknum_weekday{2016_y/jun/13} << '\n'; }
Which outputs:
2016-W25-Sun
You can find the current local julian date and time with:
#include "julian.h" #include "tz.h" #include <iostream> int main() { auto zt = date::make_zoned(date::current_zone(), std::chrono::system_clock::now()); auto ld = date::floor<date::days>(zt.get_local_time()); julian::year_month_day ymd{ld}; auto time = date::make_time(zt.get_local_time() - ld); std::cout << ymd << ' ' << time << '\n'; }
Example output:
2016-06-13 18:38:30.049598