It is also possible to create ranges over them if you want to operate on a range of time points. Hopefully, you can do everything that you need to do using the types in covers from around 29,000 B. That's unlikely to be necessary, however (and if you think that you have come up with such a class which would be generally useful, please bring it up in the digitalmars.D newsgroup, since if it's truly generally useful, we may want some version of it in One area with saving times as strings which gets a bit awkward is time zones.Rather, its API is based on Boost's types for handling dates and times (though they're far from identical).So, it's a bit of a paradigm shift to move from holds its time internally as hecto-nanoseconds (100 ns), so that's its maximum precision.It has property functions for both returning the duration of time truncated to a particular unit (such as the s can be added together or subtracted from.
Also, it should be noted that the various functions in druntime and Phobos which take a duration of time take an actual internally. They represent generic dates and/or times and are best-suited for cases where you need a date and/or time but don't care about time zone.Also, because they hold their values separated internally, those values don't have to be calculated every time that you ask for them. Most programs are unlikely to care about values outside that range however.