std.datetime
drug via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Feb 10 03:35:28 PST 2017
10.02.2017 14:15, drug пишет:
> unittest
> {
> import std.datetime : SysTime, UTC;
>
> {
> auto st = SysTime();
> st.timezone(UTC());
>
> long date = st.fromISOExtString("2017-02-10T00:00:00Z").stdTime,
> time_of_day =
> st.fromISOExtString("0000-01-01T23:59:50Z").stdTime,
> timestamp =
> st.fromISOExtString("0000-01-01T23:59:55Z").stdTime;
>
> import std.stdio;
> st.stdTime(date);
> writeln(st);
> st.stdTime(timestamp);
> writeln(st);
> st.stdTime(date+timestamp);
> writeln(st);
> }
> }
>
> prints
> ```
> 2017-Feb-10 00:00:00Z
> 0000-Jan-01 23:59:55Z
> 2016-Feb-10 23:59:55Z
> ```
> I expect
> ```
> 2017-Feb-10 00:00:00Z
> 0000-Jan-01 23:59:55Z
> 2017-Feb-10 23:59:55Z
> ```
>
> Why does it decrement years? What do I do wrong?
I found error - years should start from 1, not 0.
But if months or days start from 0 std.datetime throws exception and
don't for years - it isn't clear that zero year is negative one (in that
mean that stdTime for '0000' years will be negative.
More information about the Digitalmars-d-learn
mailing list