diff --git a/std/datetime/common.d b/std/datetime/common.d index 750de5edd..b48399bcf 100644 --- a/std/datetime/common.d +++ b/std/datetime/common.d @@ -453,11 +453,11 @@ private: @safe unittest { import core.time : Duration; - import std.datetime.date; - import std.datetime.datetime; + import std.datetime.date : Date; + import std.datetime.datetime : DateTime; import std.datetime.interval : Interval; - import std.datetime.systime; - import std.datetime.timeofday; + import std.datetime.systime : SysTime; + import std.datetime.timeofday : TimeOfDay; static assert(isTimePoint!Date); static assert(isTimePoint!DateTime); diff --git a/std/datetime/date.d b/std/datetime/date.d index a48585b7a..67690a63a 100644 --- a/std/datetime/date.d +++ b/std/datetime/date.d @@ -787,6 +787,8 @@ public: /// @safe unittest { + import std.datetime.common : AllowDayOverflow; + auto d1 = Date(2010, 1, 1); d1.add!"months"(11); assert(d1 == Date(2010, 12, 1)); @@ -1554,6 +1556,8 @@ public: /// @safe unittest { + import std.datetime.common : AllowDayOverflow; + auto d1 = Date(2010, 1, 1); d1.roll!"months"(1); assert(d1 == Date(2010, 2, 1)); @@ -2432,6 +2436,8 @@ public: /// @safe unittest { + import core.time : days; + assert(Date(2015, 12, 31) + days(1) == Date(2016, 1, 1)); assert(Date(2004, 2, 26) + days(4) == Date(2004, 3, 1)); @@ -4410,7 +4416,7 @@ private: enum daysInYear = 365; // The number of days in a non-leap year. enum daysInLeapYear = 366; // The numbef or days in a leap year. -enum daysIn4Years = daysInYear * 3 + daysInLeapYear; /// Number of days in 4 years. +enum daysIn4Years = daysInYear * 3 + daysInLeapYear; // Number of days in 4 years. enum daysIn100Years = daysIn4Years * 25 - 1; // The number of days in 100 years. enum daysIn400Years = daysIn100Years * 4 + 1; // The number of days in 400 years. diff --git a/std/datetime/datetime.d b/std/datetime/datetime.d index 20e25f6e6..5499c62ec 100644 --- a/std/datetime/datetime.d +++ b/std/datetime/datetime.d @@ -465,6 +465,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + assert(DateTime(Date(1999, 7, 6), TimeOfDay(9, 7, 5)).year == 1999); assert(DateTime(Date(2010, 10, 4), TimeOfDay(0, 0, 30)).year == 2010); assert(DateTime(Date(-7, 4, 5), TimeOfDay(7, 45, 2)).year == -7); @@ -509,6 +512,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + assert(DateTime(Date(0, 1, 1), TimeOfDay(12, 30, 33)).yearBC == 1); assert(DateTime(Date(-1, 1, 1), TimeOfDay(10, 7, 2)).yearBC == 2); assert(DateTime(Date(-100, 1, 1), TimeOfDay(4, 59, 0)).yearBC == 101); @@ -546,6 +552,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + auto dt = DateTime(Date(2010, 1, 1), TimeOfDay(7, 30, 0)); dt.yearBC = 1; assert(dt == DateTime(Date(0, 1, 1), TimeOfDay(7, 30, 0))); @@ -579,6 +588,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + assert(DateTime(Date(1999, 7, 6), TimeOfDay(9, 7, 5)).month == 7); assert(DateTime(Date(2010, 10, 4), TimeOfDay(0, 0, 30)).month == 10); assert(DateTime(Date(-7, 4, 5), TimeOfDay(7, 45, 2)).month == 4); @@ -649,6 +661,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + assert(DateTime(Date(1999, 7, 6), TimeOfDay(9, 7, 5)).day == 6); assert(DateTime(Date(2010, 10, 4), TimeOfDay(0, 0, 30)).day == 4); assert(DateTime(Date(-7, 4, 5), TimeOfDay(7, 45, 2)).day == 5); @@ -961,6 +976,8 @@ public: /// @safe unittest { + import std.datetime.common : AllowDayOverflow; + auto dt1 = DateTime(2010, 1, 1, 12, 30, 33); dt1.add!"months"(11); assert(dt1 == DateTime(2010, 12, 1, 12, 30, 33)); @@ -1023,6 +1040,8 @@ public: /// @safe unittest { + import std.datetime.common : AllowDayOverflow; + auto dt1 = DateTime(2010, 1, 1, 12, 33, 33); dt1.roll!"months"(1); assert(dt1 == DateTime(2010, 2, 1, 12, 33, 33)); @@ -2018,6 +2037,8 @@ public: /// @safe unittest { + import core.time : hours, seconds; + assert(DateTime(2015, 12, 31, 23, 59, 59) + seconds(1) == DateTime(2016, 1, 1, 0, 0, 0)); @@ -2450,6 +2471,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + assert(DateTime(Date(1999, 1, 1), TimeOfDay(12, 22, 7)).dayOfYear == 1); assert(DateTime(Date(1999, 12, 31), TimeOfDay(7, 2, 59)).dayOfYear == 365); assert(DateTime(Date(2000, 12, 31), TimeOfDay(21, 20, 0)).dayOfYear == 366); @@ -2501,6 +2525,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + assert(DateTime(Date(1, 1, 1), TimeOfDay(0, 0, 0)).dayOfGregorianCal == 1); assert(DateTime(Date(1, 12, 31), TimeOfDay(23, 59, 59)).dayOfGregorianCal == 365); assert(DateTime(Date(2, 1, 1), TimeOfDay(2, 2, 2)).dayOfGregorianCal == 366); @@ -2539,6 +2566,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + auto dt = DateTime(Date.init, TimeOfDay(12, 0, 0)); dt.dayOfGregorianCal = 1; assert(dt == DateTime(Date(1, 1, 1), TimeOfDay(12, 0, 0))); @@ -2612,6 +2642,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + assert(DateTime(Date(1999, 1, 6), TimeOfDay(0, 0, 0)).endOfMonth == DateTime(Date(1999, 1, 31), TimeOfDay(23, 59, 59))); @@ -2675,6 +2708,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + assert(DateTime(Date(1999, 1, 6), TimeOfDay(0, 0, 0)).daysInMonth == 31); assert(DateTime(Date(1999, 2, 7), TimeOfDay(19, 30, 0)).daysInMonth == 28); assert(DateTime(Date(2000, 2, 7), TimeOfDay(5, 12, 27)).daysInMonth == 29); @@ -2701,6 +2737,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + assert(DateTime(Date(1, 1, 1), TimeOfDay(12, 7, 0)).isAD); assert(DateTime(Date(2010, 12, 31), TimeOfDay(0, 0, 0)).isAD); assert(!DateTime(Date(0, 12, 31), TimeOfDay(23, 59, 59)).isAD); @@ -2803,6 +2842,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + assert(DateTime(Date(2010, 7, 4), TimeOfDay(7, 6, 12)).toISOString() == "20100704T070612"); @@ -2856,6 +2898,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + assert(DateTime(Date(2010, 7, 4), TimeOfDay(7, 6, 12)).toISOExtString() == "2010-07-04T07:06:12"); @@ -2908,6 +2953,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + assert(DateTime(Date(2010, 7, 4), TimeOfDay(7, 6, 12)).toSimpleString() == "2010-Jul-04 07:06:12"); @@ -3002,6 +3050,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + assert(DateTime.fromISOString("20100704T070612") == DateTime(Date(2010, 7, 4), TimeOfDay(7, 6, 12))); @@ -3091,6 +3142,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + assert(DateTime.fromISOExtString("2010-07-04T07:06:12") == DateTime(Date(2010, 7, 4), TimeOfDay(7, 6, 12))); @@ -3179,6 +3233,9 @@ public: /// @safe unittest { + import std.datetime.date : Date; + import std.datetime.timeofday : TimeOfDay; + assert(DateTime.fromSimpleString("2010-Jul-04 07:06:12") == DateTime(Date(2010, 7, 4), TimeOfDay(7, 6, 12))); assert(DateTime.fromSimpleString("1998-Dec-25 02:15:00") == diff --git a/std/datetime/interval.d b/std/datetime/interval.d index 7eda15fe8..ee9a0e109 100644 --- a/std/datetime/interval.d +++ b/std/datetime/interval.d @@ -7622,7 +7622,8 @@ if (isTimePoint!TP && /// @system unittest { - import std.datetime.date; + import std.datetime.common : DayOfWeek; + import std.datetime.date : Date; auto interval = Interval!Date(Date(2010, 9, 2), Date(2010, 9, 27)); auto func = everyDayOfWeek!Date(DayOfWeek.mon); @@ -7743,7 +7744,8 @@ if (isTimePoint!TP && /// @system unittest { - import std.datetime.date; + import std.datetime.common : Month; + import std.datetime.date : Date; auto interval = Interval!Date(Date(2000, 1, 30), Date(2004, 8, 5)); auto func = everyMonth!Date(Month.feb); @@ -7855,7 +7857,8 @@ if (isTimePoint!TP && /// @system unittest { - import std.datetime.date; + import core.time : dur; + import std.datetime.date : Date; auto interval = Interval!Date(Date(2010, 9, 2), Date(2010, 9, 27)); auto func = everyDuration!Date(dur!"days"(8)); @@ -7981,7 +7984,9 @@ if (isTimePoint!TP && /// @system unittest { - import std.datetime.date; + import core.time : dur; + import std.datetime.common : AllowDayOverflow; + import std.datetime.date : Date; auto interval = Interval!Date(Date(2010, 9, 2), Date(2025, 9, 27)); auto func = everyDuration!Date(4, 1, AllowDayOverflow.yes, dur!"days"(2)); diff --git a/std/datetime/systime.d b/std/datetime/systime.d index 5ff56e023..198d72428 100644 --- a/std/datetime/systime.d +++ b/std/datetime/systime.d @@ -866,6 +866,8 @@ public: /// @safe unittest { + import std.datetime.datetime : DateTime; + assert(SysTime(DateTime(1999, 7, 6, 9, 7, 5)).year == 1999); assert(SysTime(DateTime(2010, 10, 4, 0, 0, 30)).year == 2010); assert(SysTime(DateTime(-7, 4, 5, 7, 45, 2)).year == -7); @@ -934,6 +936,8 @@ public: /// @safe unittest { + import std.datetime.datetime : DateTime; + assert(SysTime(DateTime(0, 1, 1, 12, 30, 33)).yearBC == 1); assert(SysTime(DateTime(-1, 1, 1, 10, 7, 2)).yearBC == 2); assert(SysTime(DateTime(-100, 1, 1, 4, 59, 0)).yearBC == 101); @@ -1068,6 +1072,8 @@ public: /// @safe unittest { + import std.datetime.datetime : DateTime; + assert(SysTime(DateTime(1999, 7, 6, 9, 7, 5)).month == 7); assert(SysTime(DateTime(2010, 10, 4, 0, 0, 30)).month == 10); assert(SysTime(DateTime(-7, 4, 5, 7, 45, 2)).month == 4); @@ -1227,6 +1233,8 @@ public: /// @safe unittest { + import std.datetime.datetime : DateTime; + assert(SysTime(DateTime(1999, 7, 6, 9, 7, 5)).day == 6); assert(SysTime(DateTime(2010, 10, 4, 0, 0, 30)).day == 4); assert(SysTime(DateTime(-7, 4, 5, 7, 45, 2)).day == 5); @@ -1753,6 +1761,9 @@ public: /// @safe unittest { + import core.time : msecs, usecs, hnsecs, nsecs; + import std.datetime.datetime : DateTime; + auto dt = DateTime(1982, 4, 1, 20, 59, 22); assert(SysTime(dt, msecs(213)).fracSecs == msecs(213)); assert(SysTime(dt, usecs(5202)).fracSecs == usecs(5202)); @@ -1838,6 +1849,9 @@ public: /// @safe unittest { + import core.time : Duration, msecs, hnsecs, nsecs; + import std.datetime.datetime : DateTime; + auto st = SysTime(DateTime(1982, 4, 1, 20, 59, 22)); assert(st.fracSecs == Duration.zero); @@ -2223,6 +2237,10 @@ public: /// @safe unittest { + import core.time : hours; + import std.datetime.datetime : DateTime; + import std.datetime.timezone : SimpleTimeZone, UTC; + assert(SysTime(DateTime(1970, 1, 1), UTC()).toUnixTime() == 0); auto pst = new immutable SimpleTimeZone(hours(-8)); @@ -2271,6 +2289,10 @@ public: /// @safe unittest { + import core.time : hours; + import std.datetime.datetime : DateTime; + import std.datetime.timezone : SimpleTimeZone, UTC; + assert(SysTime.fromUnixTime(0) == SysTime(DateTime(1970, 1, 1), UTC())); @@ -3676,6 +3698,9 @@ public: /// @safe unittest { + import std.datetime.common : AllowDayOverflow; + import std.datetime.datetime : DateTime; + auto st1 = SysTime(DateTime(2010, 1, 1, 12, 33, 33)); st1.roll!"months"(1); assert(st1 == SysTime(DateTime(2010, 2, 1, 12, 33, 33))); @@ -4543,6 +4568,9 @@ public: /// @safe unittest { + import core.time : msecs, hnsecs; + import std.datetime.datetime : DateTime; + auto st1 = SysTime(DateTime(2010, 1, 1, 11, 23, 12)); st1.roll!"days"(1); assert(st1 == SysTime(DateTime(2010, 1, 2, 11, 23, 12))); @@ -5958,6 +5986,9 @@ public: /// @safe unittest { + import core.time : hours, seconds; + import std.datetime.datetime : DateTime; + assert(SysTime(DateTime(2015, 12, 31, 23, 59, 59)) + seconds(1) == SysTime(DateTime(2016, 1, 1, 0, 0, 0))); @@ -6540,6 +6571,8 @@ public: /// @safe unittest { + import std.datetime.date : Date; + assert(SysTime(Date(1999, 2, 1)).diffMonths( SysTime(Date(1999, 1, 31))) == 1); @@ -6621,6 +6654,8 @@ public: /// @safe unittest { + import std.datetime.datetime : DateTime; + assert(SysTime(DateTime(1999, 1, 1, 12, 22, 7)).dayOfYear == 1); assert(SysTime(DateTime(1999, 12, 31, 7, 2, 59)).dayOfYear == 365); assert(SysTime(DateTime(2000, 12, 31, 21, 20, 0)).dayOfYear == 366); @@ -6692,6 +6727,8 @@ public: /// @safe unittest { + import std.datetime.datetime : DateTime; + assert(SysTime(DateTime(1, 1, 1, 0, 0, 0)).dayOfGregorianCal == 1); assert(SysTime(DateTime(1, 12, 31, 23, 59, 59)).dayOfGregorianCal == 365); assert(SysTime(DateTime(2, 1, 1, 2, 2, 2)).dayOfGregorianCal == 366); @@ -7064,6 +7101,8 @@ public: /// @safe unittest { + import std.datetime.datetime : DateTime; + auto st = SysTime(DateTime(0, 1, 1, 12, 0, 0)); st.dayOfGregorianCal = 1; assert(st == SysTime(DateTime(1, 1, 1, 12, 0, 0))); @@ -7344,6 +7383,9 @@ public: /// @safe unittest { + import core.time : msecs, usecs, hnsecs; + import std.datetime.datetime : DateTime; + assert(SysTime(DateTime(1999, 1, 6, 0, 0, 0)).endOfMonth == SysTime(DateTime(1999, 1, 31, 23, 59, 59), hnsecs(9_999_999))); @@ -7410,6 +7452,8 @@ public: /// @safe unittest { + import std.datetime.datetime : DateTime; + assert(SysTime(DateTime(1999, 1, 6, 0, 0, 0)).daysInMonth == 31); assert(SysTime(DateTime(1999, 2, 7, 19, 30, 0)).daysInMonth == 28); assert(SysTime(DateTime(2000, 2, 7, 5, 12, 27)).daysInMonth == 29); @@ -7466,6 +7510,8 @@ public: /// @safe unittest { + import std.datetime.datetime : DateTime; + assert(SysTime(DateTime(1, 1, 1, 12, 7, 0)).isAD); assert(SysTime(DateTime(2010, 12, 31, 0, 0, 0)).isAD); assert(!SysTime(DateTime(0, 12, 31, 23, 59, 59)).isAD); @@ -7788,6 +7834,9 @@ public: /// @safe unittest { + import core.time : msecs, hnsecs; + import std.datetime.datetime : DateTime; + assert(SysTime(DateTime(2010, 7, 4, 7, 6, 12)).toISOString() == "20100704T070612"); @@ -7917,6 +7966,9 @@ public: /// @safe unittest { + import core.time : msecs, hnsecs; + import std.datetime.datetime : DateTime; + assert(SysTime(DateTime(2010, 7, 4, 7, 6, 12)).toISOExtString() == "2010-07-04T07:06:12"); @@ -8050,6 +8102,9 @@ public: /// @safe unittest { + import core.time : msecs, hnsecs; + import std.datetime.datetime : DateTime; + assert(SysTime(DateTime(2010, 7, 4, 7, 6, 12)).toSimpleString() == "2010-Jul-04 07:06:12"); @@ -8251,6 +8306,10 @@ public: /// @safe unittest { + import core.time : hours, msecs, usecs; + import std.datetime.datetime : DateTime; + import std.datetime.timezone : SimpleTimeZone, UTC; + assert(SysTime.fromISOString("20100704T070612") == SysTime(DateTime(2010, 7, 4, 7, 6, 12))); @@ -8486,6 +8545,10 @@ public: /// @safe unittest { + import core.time : hours, msecs, usecs; + import std.datetime.datetime : DateTime; + import std.datetime.timezone : SimpleTimeZone, UTC; + assert(SysTime.fromISOExtString("2010-07-04T07:06:12") == SysTime(DateTime(2010, 7, 4, 7, 6, 12))); @@ -8698,6 +8761,10 @@ public: /// @safe unittest { + import core.time : hours, msecs, usecs; + import std.datetime.datetime : DateTime; + import std.datetime.timezone : SimpleTimeZone, UTC; + assert(SysTime.fromSimpleString("2010-Jul-04 07:06:12") == SysTime(DateTime(2010, 7, 4, 7, 6, 12))); @@ -8923,6 +8990,9 @@ long unixTimeToStdTime(long unixTime) @safe pure nothrow /// @safe unittest { + import std.datetime.datetime : DateTime; + import std.datetime.timezone : UTC; + // Midnight, January 1st, 1970 assert(unixTimeToStdTime(0) == 621_355_968_000_000_000L); assert(SysTime(unixTimeToStdTime(0)) == @@ -9684,6 +9754,10 @@ afterMon: stripAndCheckLen(value[3 .. value.length], "1200:00A".length); /// @safe unittest { + import core.time : hours; + import std.datetime.common : DateTimeException; + import std.datetime.datetime : DateTime; + import std.datetime.timezone : SimpleTimeZone, UTC; import std.exception : assertThrown; auto tz = new immutable SimpleTimeZone(hours(-8)); diff --git a/std/datetime/timeofday.d b/std/datetime/timeofday.d index fccbd8cd1..ae9a9acc5 100644 --- a/std/datetime/timeofday.d +++ b/std/datetime/timeofday.d @@ -564,6 +564,8 @@ public: /// @safe unittest { + import core.time : hours, minutes, seconds; + assert(TimeOfDay(12, 12, 12) + seconds(1) == TimeOfDay(12, 12, 13)); assert(TimeOfDay(12, 12, 12) + minutes(1) == TimeOfDay(12, 13, 12)); assert(TimeOfDay(12, 12, 12) + hours(1) == TimeOfDay(13, 12, 12));