- All right, so I'm gonna be talking
about , big surprise.
I'm gonna talk a little
about where it's been
and where it's going.
So in C++11, when  was introduced,
in the heart of 
is these durations,
hours, minutes, milliseconds,
et cetera, et cetera.
And  also added
time points in C++11,
and time_points are exactly,
if you subtract two
time_points you get a duration,
or if you add a duration to a time_point
you get another time_point.
It's a great little algebra
that's built into the language,
and if you get the algebra wrong,
the great thing is the
compiler will tell you,
it's not a runtime error.
So clients can access both
time_points and duration,
and there's clocks, which
is just a collection
of time_points and durations,
and some function that
tells you the current time.
So if you want to know
more about ,
see my talk from two years ago titled
"A  Tutorial" at cppcon,
so you can find that on YouTube.
Coming in C++20, we're gonna
add several new durations,
days, weeks, months and years.
This will help us deal with calendars.
And then we're also going to
add some time_point aliases,
one called sys_time,
which is just a fancy way of
saying system clock time_point,
but for an arbitrary precision.
And one of those precisions
is going to be called
sys_days, which is nothing
but a system clock time_point
with a precision of days.
And it turns out, this is key
to having this time_point.
It turns out this is the Rosetta Stone
for interoperating with
different calendars.
And one calendar will come with C++20,
and that'll be the civil calendar.
You can write your own
calendars if you want,
a Hebrew calendar or an
ISO week-based calendar,
or what have you.
And if you want to see more
about how that's gonna work,
see my talk from three years ago,
"A C++14 Approach to Dates and Times."
At that time we weren't sure whether
this was gonna be standardized or not,
but the library turned out pretty well.
A lot of people liked it,
and so it was proposed for standardization
and voted into the working
draft earlier this year.
And also coming in C++20
there will be time_zones,
and that'll allow you
to convert between UTC
and any other time zone,
or really between any two
time zones on the planet.
And that's more than just between
your computer's local time_zone and UTC,
it's literally any time_zone.
And there'll be a new
type called zone_time,
which represents a time_zone
and a time_point pair.
And there'll be a bunch more clocks.
A utc_clock that'll
deal with leap seconds,
there's also a tai_clock for dealing
with the TAI time standard,
gps_clock and a file_clock
for new file systems.
So you'll be able to model all
these different time systems
and deal with leap seconds.
And to top it all off,
there'll be parsing and formatting
for everything from
durations, time_points,
different time zones,
calendars, you name it.
And if you want to hear more about that,
see my talk from two years ago,
"Welcome to the Time Zone."
And that concludes my lightening talk,
and that you very much for your time.
