// Written in the D programming language /++ $(SCRIPT inhibitQuickIndex = 1;) Phobos provides the following functionality for time: $(DIVC quickindex, $(BOOKTABLE , $(TR $(TH Functionality) $(TH Symbols) ) $(TR $(TD Points in Time) $(TD $(REF_ALTTEXT Clock, Clock, std, datetime, systime)$(NBSP) $(REF_ALTTEXT Date, Date, std, datetime, date)$(NBSP) $(REF_ALTTEXT TimeOfDay, TimeOfDay, std, datetime, date)$(NBSP) $(REF_ALTTEXT DateTime, DateTime, std, datetime, date)$(NBSP) $(REF_ALTTEXT SysTime, SysTime, std, datetime, systime)$(NBSP) ) ) $(TR $(TD $(MREF_ALTTEXT Timezones, std, datetime, timezone)) $(TD $(REF_ALTTEXT TimeZone, TimeZone, std, datetime, timezone)$(NBSP) $(REF_ALTTEXT UTC, UTC, std, datetime, timezone)$(NBSP) $(REF_ALTTEXT LocalTime, LocalTime, std, datetime, timezone)$(NBSP) $(REF_ALTTEXT PosixTimeZone, PosixTimeZone, std, datetime, timezone)$(NBSP) $(REF_ALTTEXT WindowsTimeZone, WindowsTimeZone, std, datetime, timezone)$(NBSP) $(REF_ALTTEXT SimpleTimeZone, SimpleTimeZone, std, datetime, timezone)$(NBSP) ) ) $(TR $(TD Intervals and Ranges of Time) $(TD $(REF_ALTTEXT Interval, Interval, std, datetime, interval)$(NBSP) $(REF_ALTTEXT PosInfInterval, PosInfInterval, std, datetime, interval)$(NBSP) $(REF_ALTTEXT NegInfInterval, NegInfInterval, std, datetime, interval)$(NBSP) ) ) $(TR $(TD $(MREF_ALTTEXT Durations of Time, core, time)) $(TD $(REF_ALTTEXT Duration, Duration, core, time)$(NBSP) $(REF_ALTTEXT weeks, weeks, core, time)$(NBSP) $(REF_ALTTEXT days, days, core, time)$(NBSP) $(REF_ALTTEXT hours, hours, core, time)$(NBSP) $(REF_ALTTEXT minutes, minutes, core, time)$(NBSP) $(REF_ALTTEXT seconds, seconds, core, time)$(NBSP) $(REF_ALTTEXT msecs, msecs, core, time)$(NBSP) $(REF_ALTTEXT usecs, usecs, core, time)$(NBSP) $(REF_ALTTEXT hnsecs, hnsecs, core, time)$(NBSP) $(REF_ALTTEXT nsecs, nsecs, core, time)$(NBSP) ) ) $(TR $(TD Time Measurement and Benchmarking) $(TD $(REF_ALTTEXT MonoTime, MonoTime, core, time)$(NBSP) $(REF_ALTTEXT StopWatch, StopWatch, std, datetime, stopwatch)$(NBSP) $(REF_ALTTEXT benchmark, benchmark, std, datetime, stopwatch)$(NBSP) ) ) )) This functionality is separated into the following modules: $(UL $(LI $(MREF std, datetime, date) for points in time without timezones.) $(LI $(MREF std, datetime, timezone) for classes which represent timezones.) $(LI $(MREF std, datetime, systime) for a point in time with a timezone.) $(LI $(MREF std, datetime, interval) for types which represent series of points in time.) $(LI $(MREF std, datetime, stopwatch) for measuring time.) ) See_Also: $(MREF core, time)$(BR) $(DDLINK intro-to-datetime, Introduction to std.datetime, Introduction to std.datetime)<br> $(HTTP en.wikipedia.org/wiki/ISO_8601, ISO 8601)<br> $(HTTP en.wikipedia.org/wiki/Tz_database, Wikipedia entry on TZ Database)<br> $(HTTP en.wikipedia.org/wiki/List_of_tz_database_time_zones, List of Time Zones)<br> License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). Authors: $(HTTP jmdavisprog.com, Jonathan M Davis) and Kato Shoichi Source: $(PHOBOSSRC std/datetime/package.d)+/module std.datetime; /// Get the current time from the system clock.@safe unittest{ import std.datetime.systime : SysTime, Clock; SysTime currentTime = Clock.currTime();} /**Construct a specific point in time without timezone informationand get its ISO string. */@safe unittest{ import std.datetime.date : DateTime; auto dt = DateTime(2018, 1, 1, 12, 30, 10); assert(dt.toISOString() == "20180101T123010"); assert(dt.toISOExtString() == "2018-01-01T12:30:10");} /**Construct a specific point in time in the UTC timezone andadd two days. */@safe unittest{ import std.datetime.systime : SysTime; import std.datetime.timezone : UTC; import core.time : days; auto st = SysTime(DateTime(2018, 1, 1, 12, 30, 10), UTC()); assert(st.toISOExtString() == "2018-01-01T12:30:10Z"); st += 2.days; assert(st.toISOExtString() == "2018-01-03T12:30:10Z");} public import core.time;public import std.datetime.date;public import std.datetime.interval;public import std.datetime.systime;public import std.datetime.timezone; import core.exception : AssertError;import std.functional : unaryFun;import std.traits;import std.typecons : Flag, Yes, No; // Verify module example.@safe unittest{ auto currentTime = Clock.currTime(); auto timeString = currentTime.toISOExtString(); auto restoredTime = SysTime.fromISOExtString(timeString);} // Verify Examples for core.time.Duration which couldn't be in core.time.@safe unittest{ assert(std.datetime.Date(2010, 9, 7) + dur!"days"(5) == std.datetime.Date(2010, 9, 12)); assert(std.datetime.Date(2010, 9, 7) - std.datetime.Date(2010, 10, 3) == dur!"days"(-26));} @safe unittest{ import std.traits : hasUnsharedAliasing; /* https://issues.dlang.org/show_bug.cgi?id=6642 */ static assert(!hasUnsharedAliasing!Date); static assert(!hasUnsharedAliasing!TimeOfDay); static assert(!hasUnsharedAliasing!DateTime); static assert(!hasUnsharedAliasing!SysTime);}
// Written in the D programming language
/++
$(SCRIPT inhibitQuickIndex = 1;)
Phobos provides the following functionality for time:
$(DIVC quickindex,
$(BOOKTABLE ,
$(TR $(TH Functionality) $(TH Symbols)
)
$(TR
$(TD Points in Time)
$(TD
$(REF_ALTTEXT Clock, Clock, std, datetime, systime)$(NBSP)
$(REF_ALTTEXT Date, Date, std, datetime, date)$(NBSP)
$(REF_ALTTEXT TimeOfDay, TimeOfDay, std, datetime, date)$(NBSP)
$(REF_ALTTEXT DateTime, DateTime, std, datetime, date)$(NBSP)
$(REF_ALTTEXT SysTime, SysTime, std, datetime, systime)$(NBSP)
)
)
$(TR
$(TD $(MREF_ALTTEXT Timezones, std, datetime, timezone))
$(TD
$(REF_ALTTEXT TimeZone, TimeZone, std, datetime, timezone)$(NBSP)
$(REF_ALTTEXT UTC, UTC, std, datetime, timezone)$(NBSP)
$(REF_ALTTEXT LocalTime, LocalTime, std, datetime, timezone)$(NBSP)
$(REF_ALTTEXT PosixTimeZone, PosixTimeZone, std, datetime, timezone)$(NBSP)
$(REF_ALTTEXT WindowsTimeZone, WindowsTimeZone, std, datetime, timezone)$(NBSP)
$(REF_ALTTEXT SimpleTimeZone, SimpleTimeZone, std, datetime, timezone)$(NBSP)
)
)
$(TR
$(TD Intervals and Ranges of Time)
$(TD
$(REF_ALTTEXT Interval, Interval, std, datetime, interval)$(NBSP)
$(REF_ALTTEXT PosInfInterval, PosInfInterval, std, datetime, interval)$(NBSP)
$(REF_ALTTEXT NegInfInterval, NegInfInterval, std, datetime, interval)$(NBSP)
)
)
$(TR
$(TD $(MREF_ALTTEXT Durations of Time, core, time))
$(TD
$(REF_ALTTEXT Duration, Duration, core, time)$(NBSP)
$(REF_ALTTEXT weeks, weeks, core, time)$(NBSP)
$(REF_ALTTEXT days, days, core, time)$(NBSP)
$(REF_ALTTEXT hours, hours, core, time)$(NBSP)
$(REF_ALTTEXT minutes, minutes, core, time)$(NBSP)
$(REF_ALTTEXT seconds, seconds, core, time)$(NBSP)
$(REF_ALTTEXT msecs, msecs, core, time)$(NBSP)
$(REF_ALTTEXT usecs, usecs, core, time)$(NBSP)
$(REF_ALTTEXT hnsecs, hnsecs, core, time)$(NBSP)
$(REF_ALTTEXT nsecs, nsecs, core, time)$(NBSP)
)
)
$(TR
$(TD Time Measurement and Benchmarking)
$(TD
$(REF_ALTTEXT MonoTime, MonoTime, core, time)$(NBSP)
$(REF_ALTTEXT StopWatch, StopWatch, std, datetime, stopwatch)$(NBSP)
$(REF_ALTTEXT benchmark, benchmark, std, datetime, stopwatch)$(NBSP)
)
)
))
This functionality is separated into the following modules:
$(UL
$(LI $(MREF std, datetime, date) for points in time without timezones.)
$(LI $(MREF std, datetime, timezone) for classes which represent timezones.)
$(LI $(MREF std, datetime, systime) for a point in time with a timezone.)
$(LI $(MREF std, datetime, interval) for types which represent series of points in time.)
$(LI $(MREF std, datetime, stopwatch) for measuring time.)
)
See_Also:
$(MREF core, time)$(BR)
$(DDLINK intro-to-datetime, Introduction to std.datetime,
Introduction to std.datetime)<br>
$(HTTP en.wikipedia.org/wiki/ISO_8601, ISO 8601)<br>
$(HTTP en.wikipedia.org/wiki/Tz_database,
Wikipedia entry on TZ Database)<br>
$(HTTP en.wikipedia.org/wiki/List_of_tz_database_time_zones,
List of Time Zones)<br>
License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
Authors: $(HTTP jmdavisprog.com, Jonathan M Davis) and Kato Shoichi
Source: $(PHOBOSSRC std/datetime/package.d)
+/
module std.datetime;
/// Get the current time from the system clock.
@safe unittest
{
import std.datetime.systime : SysTime, Clock;
SysTime currentTime = Clock.currTime();
}
/**
Construct a specific point in time without timezone information
and get its ISO string.
*/
@safe unittest
{
import std.datetime.date : DateTime;
auto dt = DateTime(2018, 1, 1, 12, 30, 10);
assert(dt.toISOString() == "20180101T123010");
assert(dt.toISOExtString() == "2018-01-01T12:30:10");
}
/**
Construct a specific point in time in the UTC timezone and
add two days.
*/
@safe unittest
{
import std.datetime.systime : SysTime;
import std.datetime.timezone : UTC;
import core.time : days;
auto st = SysTime(DateTime(2018, 1, 1, 12, 30, 10), UTC());
assert(st.toISOExtString() == "2018-01-01T12:30:10Z");
st += 2.days;
assert(st.toISOExtString() == "2018-01-03T12:30:10Z");
}
public import core.time;
public import std.datetime.date;
public import std.datetime.interval;
public import std.datetime.systime;
public import std.datetime.timezone;
import core.exception : AssertError;
import std.functional : unaryFun;
import std.traits;
import std.typecons : Flag, Yes, No;
// Verify module example.
@safe unittest
{
auto currentTime = Clock.currTime();
auto timeString = currentTime.toISOExtString();
auto restoredTime = SysTime.fromISOExtString(timeString);
}
// Verify Examples for core.time.Duration which couldn't be in core.time.
@safe unittest
{
assert(std.datetime.Date(2010, 9, 7) + dur!"days"(5) ==
std.datetime.Date(2010, 9, 12));
assert(std.datetime.Date(2010, 9, 7) - std.datetime.Date(2010, 10, 3) ==
dur!"days"(-26));
}
@safe unittest
{
import std.traits : hasUnsharedAliasing;
/* https://issues.dlang.org/show_bug.cgi?id=6642 */
static assert(!hasUnsharedAliasing!Date);
static assert(!hasUnsharedAliasing!TimeOfDay);
static assert(!hasUnsharedAliasing!DateTime);
static assert(!hasUnsharedAliasing!SysTime);
}