英語版
このページの英語版を見る

std.datetime.systime

class Clock;
事実上、名前空間は、それが含むメソッドがシステム時計から時刻を取得するものであることを明確にするためのものである。 システム・クロックから時刻を取得する。インスタンス化することはできない。
Examples:
現在の時刻を SysTime
import std.datetime.timezone : LocalTime;
SysTime today = Clock.currTime();
assert(today.timezone is LocalTime());
@safe SysTime currTime(ClockType clockType = ClockType.normal)(immutable TimeZone tz = LocalTime());
指定されたタイムゾーンの現在時刻を返す。
Parameters:
クロックを使うかを示す。
clockType core.time.ClockType は、現在時刻の取得にどのシステム を示す。デフォルト以外のものを使う必要がある デフォルト以外のものを使う必要はない。
TimeZone tz 返されるSysTimeのタイムゾーン。
Throws:
std.datetime.date.DateTimeException を取得できなかった場合は 時間を取得できなかった場合
@property @trusted long currStdTime(ClockType clockType = ClockType.normal)();
西暦1月1日午前0時からのhn秒数を返す。 を返す。
Parameters:
時計を使うかを示す。
clockType core.time.ClockType は、現在時刻の取得にどのシステム を示す。デフォルト以外を使う必要のある デフォルト以外のものを使う必要はない。
Throws:
std.datetime.date.DateTimeException 時刻の取得に失敗した場合は 時刻を取得できなかった場合
struct SysTime;
SysTimeは、現在の時刻をシステムから取得するために使われる型である。 システムから現在時刻を取得したり、タイムゾーンに関係する何かをするときに使われるタイプである。とは異なり std.datetime.date.DateTimeと異なり、タイムゾーンは SysTime(に不可欠な部分である(ただし、ローカル・タイム・アプリケーションでは、タイムゾーンは無視できる デフォルトでローカルタイムゾーンを使用するため、タイムゾーンは無視しても動作する)。これは 内部時刻は標準時(西暦1月1日午前0時からのhnsecs)で保持される。 UTC)で保持されるため、システム時間とのインターフェイスは良好である。
hnsec(ヘクト・ナノ秒)は100ナノ秒である。1秒は10,000,000hnsecsである。
とは異なり DateTime, SysTimeとは異なり とは異なり、カレンダーベースの操作には最適化されていない。 年や日といった個々の単位を得るには変換が必要で、効率が悪くなる。
時差を気にしないカレンダー・ベースのオペレーションでは タイムゾーンを気にしないカレンダーベースの操作では DateTimeである。 を使う。システム時間には、"@system"を使う。 SysTime.

を以下の型のいずれかにキャストすると、変換が実行される。 SysTimeを以下の型のいずれかにキャストすると、変換が実行される:

を変換する。 Dateまたは DateTimeSysTimeに変換するには SysTimeのコンストラクタを使用する。 のコンストラクタを使用する。 std.datetime.timezone.TimeZoneを渡さない場合は を渡さなければローカルのタイムゾーンが使われる)。ただし DateTimeから SysTimeへの変換は必ずしも ただし、aからaへの変換は、夏時間の関係で必ずしも100%正確ではないことに注意すること(1年のうち1時間は存在せず、もう1時間は2回発生する)。 が2回発生する)。変換エラーのリスクを回避するため、時刻を SysTimes.夏時間を除けば、変換に問題はない。 問題はないはずだ。

ローカルタイムやUTC以外のタイムゾーンを使う場合は std.datetime.timezone.PosixTimeZoneを使用する、 で使用し(TZデータベースファイルを提供する場合は) std.datetime.timezone.WindowsTimeZoneを使う。での時間は SysTimeの時刻は、内部的には西暦1月1日午前0時からのhn秒単位で管理されている。 UTCである。のタイムゾーンを変更しても変換エラーは起こらない。 SysTime. std.datetime.timezone.LocalTimeTimeZoneローカル時間を表すクラスである、 そしてUTCTimeZoneクラスである。 である。 SysTimeLocalTimeもし は TimeZoneを使用する。タイムゾーンの詳細については のドキュメントを参照のこと。 TimeZone, PosixTimeZoneおよび WindowsTimeZone.

SysTime紀元前29,000年から紀元後29,000年までである。 紀元後29,000年である。

See Also:
Clock.currTimeは現在時刻を SysTime.
Examples:
import core.time : days, hours, seconds;
import std.datetime.date : Date, DateTime;
import std.datetime.timezone : SimpleTimeZone, UTC;

const dt = DateTime(2018, 1, 1, 10, 30, 0);
// UTCタイムゾーンで特定の時間を指定する
auto st = SysTime(dt, UTC());
writeln(st.year); // 2018
writeln(st.hour); // 10

// 変換する
writeln(cast(DateTime)st); // dt
writeln(cast(Date)st); // Date(2018, 1, 1)

// ニューヨークのタイムゾーンで特定の時点にする
const ny = SysTime(dt,
    new immutable SimpleTimeZone(-5.hours, "America/New_York")
);
assert(ny != st);
writeln(ny.hour); // 10

// ISO標準時の文字列
writeln(st.toISOString()); // "20180101T103000Z"
writeln(st.toISOExtString()); // "2018-01-01T10:30:00Z"

// 2日と30秒を追加する
st += 2.days + 30.seconds;
writeln(st.toISOExtString()); // "2018-01-03T10:30:30Z"
nothrow scope @safe this(DateTime dateTime, return scope immutable TimeZone tz = null) return;
Parameters:
DateTime dateTime を設定する。 std.datetime.date.DateTimeを設定する この SysTimeの内部標準時を設定する。として std.datetime.date.DateTimeには タイムゾーンの概念がないため、tzがタイムゾーンとして使われる。
TimeZone tz タイムゾーンは std.datetime.timezone.TimeZoneを使用する。 SysTime.nullの場合、 std.datetime.timezone.LocalTimeが使われる。もし 与えられた std.datetime.date.DateTimeは は指定されたタイムゾーンにあると仮定される。
scope @safe this(DateTime dateTime, Duration fracSecs, return scope immutable TimeZone tz = null) return;
Parameters:
DateTime dateTime を設定する。 std.datetime.date.DateTimeを設定する この SysTimeの内部標準時を設定する。として std.datetime.date.DateTimeには にはタイムゾーンの概念がないため、tzがタイムゾーンとして使われる。
Duration fracSecs 時刻の端数秒部分。
TimeZone tz これは std.datetime.timezone.TimeZoneである。 SysTime.nullの場合、 std.datetime.timezone.LocalTimeが使われる。もし 与えられた std.datetime.date.DateTimeは は指定されたタイムゾーンにあると仮定される。
Throws:
std.datetime.date.DateTimeExceptionもし fracSecsが負であるか 秒以上である。
nothrow scope @safe this(Date date, return scope immutable TimeZone tz = null) return;
Parameters:
Date date を設定する。 std.datetime.date.Dateを設定する。 SysTimeの内部標準時を設定する。として std.datetime.date.Dateはタイムゾーンの概念を持たないので、tz がタイムゾーンとして使われる。
TimeZone tz タイムゾーンは std.datetime.timezone.TimeZoneを使用する。 SysTime.nullの場合、 std.datetime.timezone.LocalTimeが使われる。もし 与えられた std.datetime.date.Dateは 指定されたタイムゾーンにいると仮定される。
pure nothrow scope @safe this(long stdTime, return scope immutable TimeZone tz = null) return;

注釈: 他のコンストラクターは、指定された日付/時刻を受け取り、それが指定されたタイムゾーンにあると仮定し、それをUTCのhnsecsに変換する。 指定されたタイムゾーンにあると仮定し、UTCのhnsecsに変換する。 すなわち標準時である。 コンストラクターは標準時を受け取る、 変換は行われない。もちろん、さまざまなゲッター プロパティと関数は、指定されたタイムゾーンの変換関数を使用する。 関数を使用するが、このコンストラクタへの引数の変換は行われない。 このコンストラクタの引数の変換は行われない。

Parameters:
long stdTime 西暦1月1日午前0時からのhn秒数。 UTCである。
TimeZone tz この std.datetime.timezone.TimeZoneである。 SysTime.nullの場合、 std.datetime.timezone.LocalTimeが使われる。
pure nothrow ref scope @safe SysTime opAssign()(auto ref const(SysTime) rhs) return;
Parameters:
const(SysTime) rhs がある。 SysTimeをこれに割り当てる。
Returns:
このSysTimethis
const pure nothrow scope @safe bool opEquals()(auto ref const(SysTime) rhs);
と与えられた SysTimeと与えられた SysTime.
タイムゾーンは無視されることに注意。内部の 標準時(UTC)だけが比較される。
const pure nothrow scope @safe int opCmp()(auto ref const(SysTime) rhs);
これを SysTimeを与えられた SysTime.
を比較するとき、タイムゾーンは関係ない。 SysTimes.
Returns:
this < rhs < 0
this == rhs 0
this > rhs > 0
const pure nothrow @nogc scope @safe size_t toHash();
Returns:
のハッシュである。 SysTime.
const nothrow @property scope @safe short year();
グレゴリオ暦の年。正の数は西暦である。 は紀元前である。
@property scope @safe void year(int year);
グレゴリオ暦の年。正の数は西暦。 は紀元前である。
Parameters:
int year このSysTime 「年」を設定する。
Throws:
std.datetime.date.DateTimeException 新しい年が 新年がうるう年でない場合、2月29日になる。
Examples:
import std.datetime.date : DateTime;

writeln(SysTime(DateTime(1999, 7, 6, 9, 7, 5)).year); // 1999
writeln(SysTime(DateTime(2010, 10, 4, 0, 0, 30)).year); // 2010
writeln(SysTime(DateTime(-7, 4, 5, 7, 45, 2)).year); // -7
const @property scope @safe ushort yearBC();
グレゴリオ暦の紀元前0年を紀元前1年と数える。
Throws:
Examples:
import std.datetime.date : DateTime;

writeln(SysTime(DateTime(0, 1, 1, 12, 30, 33)).yearBC); // 1
writeln(SysTime(DateTime(-1, 1, 1, 10, 7, 2)).yearBC); // 2
writeln(SysTime(DateTime(-100, 1, 1, 4, 59, 0)).yearBC); // 101
@property scope @safe void yearBC(int year);
グレゴリオ暦の紀元前0年を紀元前1年と数える。
Parameters:
int year この SysTimeに設定する。
Throws:
std.datetime.date.DateTimeException正の値でない場合は を指定する。
const nothrow @property scope @safe Month month();
グレゴリオ暦の月。
Examples:
import std.datetime.date : DateTime;

writeln(SysTime(DateTime(1999, 7, 6, 9, 7, 5)).month); // 7
writeln(SysTime(DateTime(2010, 10, 4, 0, 0, 30)).month); // 10
writeln(SysTime(DateTime(-7, 4, 5, 7, 45, 2)).month); // 4
@property scope @safe void month(Month month);
グレゴリオ暦の月。
Parameters:
Month month この SysTimeに設定する。
Throws:
std.datetime.date.DateTimeException指定された月が が有効な月でない場合は
const nothrow @property scope @safe ubyte day();
グレゴリオ暦の月の日。
Examples:
import std.datetime.date : DateTime;

writeln(SysTime(DateTime(1999, 7, 6, 9, 7, 5)).day); // 6
writeln(SysTime(DateTime(2010, 10, 4, 0, 0, 30)).day); // 4
writeln(SysTime(DateTime(-7, 4, 5, 7, 45, 2)).day); // 5
@property scope @safe void day(int day);
グレゴリオ暦の月の一日。
Parameters:
int day この SysTimeに設定する。
Throws:
std.datetime.date.DateTimeException指定された日が でない場合は
const nothrow @property scope @safe ubyte hour();
午前0時を何時間も過ぎている。
@property scope @safe void hour(int hour);
真夜中を何時間も過ぎた。
Parameters:
int hour この SysTimeの時間を設定する。
Throws:
std.datetime.date.DateTimeException指定された時間が を設定する。
const nothrow @property scope @safe ubyte minute();
現在の時刻から数分経過している。
@property scope @safe void minute(int minute);
現在の時刻を数分過ぎた
Parameters:
int minute この SysTimeに設定する分。
Throws:
std.datetime.date.DateTimeException指定された分が が有効な分でない場合
const nothrow @property scope @safe ubyte second();
現在の分を数秒過ぎたところ。
@property scope @safe void second(int second);
現在の分を数秒過ぎた
Parameters:
int second この SysTimeに設定する。
Throws:
std.datetime.date.DateTimeException与えられた秒が が有効な秒でない場合は
const nothrow @property scope @safe Duration fracSecs();
秒未満の端数秒(つまり SysTime の秒未満の部分)。
Examples:
import core.time : msecs, usecs, hnsecs, nsecs;
import std.datetime.date : DateTime;

auto dt = DateTime(1982, 4, 1, 20, 59, 22);
writeln(SysTime(dt, msecs(213)).fracSecs); // msecs(213)
writeln(SysTime(dt, usecs(5202)).fracSecs); // usecs(5202)
writeln(SysTime(dt, hnsecs(1234567)).fracSecs); // hnsecs(1234567)

// SysTimeとDurationの精度はどちらもhnsecs(100ナノ秒)なので、
// nsecsは切り捨てられる。
writeln(SysTime(dt, nsecs(123456789)).fracSecs); // nsecs(123456700)
@property scope @safe void fracSecs(Duration fracSecs);
秒未満の端数秒。 SysTime の秒未満の部分)。
Parameters:
Duration fracSecs このSysTime'の端数秒を設定する期間 秒に設定する。
Throws:
std.datetime.date.DateTimeException もし が負の場合、または1秒以上の場合。
Examples:
import core.time : Duration, msecs, hnsecs, nsecs;
import std.datetime.date : DateTime;

auto st = SysTime(DateTime(1982, 4, 1, 20, 59, 22));
writeln(st.fracSecs); // Duration.zero

st.fracSecs = msecs(213);
writeln(st.fracSecs); // msecs(213)

st.fracSecs = hnsecs(1234567);
writeln(st.fracSecs); // hnsecs(1234567)

// SysTimeの精度はhnsecs(100ns)なので、
// nsecsは切り捨てられる。
st.fracSecs = nsecs(123456789);
writeln(st.fracSecs); // hnsecs(1234567)
const pure nothrow @nogc @property scope @safe long stdTime();
西暦1月1日午前0時(UTC)からの合計hn秒。これは の内部表現である。 SysTime.
pure nothrow @property scope @safe void stdTime(long stdTime);
西暦1月1日午前0時(UTC)からの合計hn秒。これは の内部表現である。 SysTime.
Parameters:
long stdTime 西暦1月1日UTCからのhn秒数。
const pure nothrow @property scope @safe immutable(TimeZone) timezone() return;
現在のタイムゾーン SysTime.その内部時間は その内部時刻は常にUTCに保たれるので、夏時間によるタイムゾーン間の変換の問題はない。 に起因するタイムゾーン間の変換問題は発生しない。のような、時刻の一部または全部を返す関数は、この時刻に合わせる。 hoursのような、時刻の全部または一部を返す関数は SysTimeのタイムゾーンに合わせる。 を返す。
pure nothrow @property scope @safe void timezone(immutable TimeZone timezone);
現在のタイムゾーンは SysTime.内部時刻は したがって、夏時間によるタイムゾーン間の変換の問題はない。 に起因するタイムゾーン間の変換問題は発生しない。のような、時刻の一部または全部を返す関数は、この時刻に合わせる。 hoursのような、時刻の全部または一部を返す関数は SysTimeのタイムゾーンに合わせる。 を返す。
Parameters:
TimeZone timezone この std.datetime.timezone.TimeZoneで設定する。 SysTimeのタイムゾーンを設定する。
const nothrow @property scope @safe bool dstInEffect() return;
そのタイムゾーンで夏時間が有効かどうかを返す。 SysTime.
const nothrow @property scope @safe Duration utcOffset() return;
UTCからのオフセットを返す SysTime. もしあれば)その時点で有効な夏時間オフセットも含まれる。
const pure nothrow scope @safe SysTime toLocalTime();
を返す。 SysTimeを返す。 std.datetime.timezone.LocalTimeをタイムゾーンとして返す。
const pure nothrow scope @safe SysTime toUTC();
を返す。 SysTimeを返す。 UTC をタイムゾーンとして返す。
const pure nothrow scope @safe SysTime toOtherTZ(immutable TimeZone tz);
を返す。 SysTimeを返す。 与えられたタイムゾーンをタイムゾーンとして持つ
const pure nothrow scope @safe T toUnixTime(T = time_t)()
if (is(T == int) || is(T == long));
このSysTime をunix時間に変換する(つまり、UTCの1970年1月1日午前0時からの秒数)、 UTCの1970年1月1日午前0時からの秒)に変換する。
C標準はtime_tの表現を規定していない。 実装系定義: "である。POSIXシステムでは、unix時間は POSIXシステムでは、unix timeはtime_tと等価であるが、他のシステムでは必ずしもそうではない(例えば、Digital Mars Cランではそうではない 例えば、Digital Mars Cランタイムでは違う)。そのため、POSIXシステム以外のC関数でunix timeをPOSIXシステム以外のC関数で使う場合は注意が必要である。
デフォルトでは、戻り値の型はtime_tである。 通常、32ビットシステムではint、64ビットシステムではlongのエイリアスである)であるが、異なるサイズが必要な場合 をテンプレート引数として渡すことができる。 引数として渡すことができる。
戻り値の型がint型で、結果がint型に収まらない場合は、32ビットで保持できる最も近い値が返される。 に最も近い値が使われる。int.max を超える場合はその値が使われ、下回る場合はint.min が使われる)。しかし しかし、戻り値の型がlongの場合、整数のオーバーフローに対処する試みは行われない。
Parameters:
T 戻り値の型(intまたはlong)デフォルトはtime_tである。 通常、32ビットシステムでは32ビット、64ビットシステムでは64ビットである。 である。
Returns:
このSysTimeと等価なunix時間を表す符号付き整数であ
る。
このSysTimeに相当する。
Examples:
import core.time : hours;
import std.datetime.date : DateTime;
import std.datetime.timezone : SimpleTimeZone, UTC;

writeln(SysTime(DateTime(1970, 1, 1), UTC()).toUnixTime()); // 0

auto pst = new immutable SimpleTimeZone(hours(-8));
writeln(SysTime(DateTime(1970, 1, 1), pst).toUnixTime()); // 28800

auto utc = SysTime(DateTime(2007, 12, 22, 8, 14, 45), UTC());
writeln(utc.toUnixTime()); // 1_198_311_285

auto ca = SysTime(DateTime(2007, 12, 22, 8, 14, 45), pst);
writeln(ca.toUnixTime()); // 1_198_340_085

static void testScope(scope ref SysTime st) @safe
{
    auto result = st.toUnixTime();
}
static pure nothrow @safe SysTime fromUnixTime(long unixTime, immutable TimeZone tz = LocalTime());
unix時間(1970年1月1日午前0時(UTC)からの秒数)を UTC)から SysTime.
C標準ではtime_tの表現は規定されていない。 実装系定義: "である。POSIXシステムでは、unix timeは と等価だが、他のシステムでは必ずしもそうではない(例えば、Digital Mars Cランタイムではそうではない)。 例えば、Digital Mars Cランタイムでは違う)。そのため、POSIXシステム以外のC関数でunix timeをPOSIXシステム以外のC関数で使う場合は注意が必要である。
Parameters:
long unixTime 1970年1月1日午前0時(UTC)からの秒数。
TimeZone tz 返されるSysTimeのタイムゾーン。
Examples:
import core.time : hours;
import std.datetime.date : DateTime;
import std.datetime.timezone : SimpleTimeZone, UTC;

assert(SysTime.fromUnixTime(0) ==
       SysTime(DateTime(1970, 1, 1), UTC()));

auto pst = new immutable SimpleTimeZone(hours(-8));
assert(SysTime.fromUnixTime(28800) ==
       SysTime(DateTime(1970, 1, 1), pst));

auto st1 = SysTime.fromUnixTime(1_198_311_285, UTC());
writeln(st1); // SysTime(DateTime(2007, 12, 22, 8, 14, 45), UTC())
assert(st1.timezone is UTC());
writeln(st1); // SysTime(DateTime(2007, 12, 22, 0, 14, 45), pst)

auto st2 = SysTime.fromUnixTime(1_198_311_285, pst);
writeln(st2); // SysTime(DateTime(2007, 12, 22, 8, 14, 45), UTC())
assert(st2.timezone is pst);
writeln(st2); // SysTime(DateTime(2007, 12, 22, 0, 14, 45), pst)
const pure nothrow scope @safe timeval toTimeVal();
timeval を返す。 SysTime.
std.datetimeのすべての変換と同様に、これは切り捨て変換であることに注意。 変換であることに注意。
もしtimeval.tv_sec がintで、結果がintに収まらない場合は、32ビットで保持できる最も近い値が使われる。 に32ビットで保持できる最も近い値が使用される。 tv_sec に使用される(つまり、オーバーした場合はint.max 、アンダーした場合はint.min )。 に使用される)。
const pure nothrow scope @safe timespec toTimeSpec();
を表すtimespec を返す。 SysTime.
この関数はPosix専用である。
const nothrow scope @safe tm toTM();
を表すtm を返す。 SysTime.
nothrow ref scope @safe SysTime add(string units)(long value, AllowDayOverflow allowOverflow = AllowDayOverflow.yes)
if (units == "years" || units == "months");
指定された年数または月数をこれに加算する。 SysTime.A 負の数は引く。
日数のオーバーフローが許可されている場合、調整された年/月の日付が新しい月の日数をオーバーフローすることに注意する。 が新しい月の日数をオーバーする場合、月が1つインクリメントされ、 日が新しい月の日数に設定される。 は1つインクリメントされ、日はオーバーフローした日数に設定される。 に設定される。(たとえば、日が31で新しい月が6月だった場合 月が7月になり、新しい日は1になる)。もし 日のオーバーフローが許可されていない場合、日はその月の最後の有効な日に設定される。 に設定される(例えば、6月31日は6月30日になる)。
Parameters:
units 追加する単位の型(「年」または「月」)。
long value 追加する月または年の数。 SysTime.
AllowDayOverflow allowOverflow 日数をオーバーフローさせるかどうか、 月をインクリメントする。
nothrow ref scope @safe SysTime roll(string units)(long value, AllowDayOverflow allowOverflow = AllowDayOverflow.yes)
if (units == "years");
指定された年数または月数をこの SysTime.A 負の数は減算する。
ローリングと加算の違いは、ローリングは大きな単位には影響しないということである。 大きな単位に影響しないことである。ローリングは SysTime12ヶ月 はまったく同じである。 SysTime.ただし、各月の日数が異なるため ただし、各月の日数が異なるため、日数には影響がある。
年よりも大きな単位は存在しないため、年を足すことと年をまたぐことに違いはない。 年を加算する場合と、年を繰り下げる場合の違いはない。
Parameters:
units 追加する単位の型(「年」または「月」)。
long value 追加する月または年の数。 SysTime.
AllowDayOverflow allowOverflow 日数をオーバーフローさせるかどうか、 月をインクリメントする。
Examples:
import std.datetime.date : AllowDayOverflow, DateTime;

auto st1 = SysTime(DateTime(2010, 1, 1, 12, 33, 33));
st1.roll!"months"(1);
writeln(st1); // SysTime(DateTime(2010, 2, 1, 12, 33, 33))

auto st2 = SysTime(DateTime(2010, 1, 1, 12, 33, 33));
st2.roll!"months"(-1);
writeln(st2); // SysTime(DateTime(2010, 12, 1, 12, 33, 33))

auto st3 = SysTime(DateTime(1999, 1, 29, 12, 33, 33));
st3.roll!"months"(1);
writeln(st3); // SysTime(DateTime(1999, 3, 1, 12, 33, 33))

auto st4 = SysTime(DateTime(1999, 1, 29, 12, 33, 33));
st4.roll!"months"(1, AllowDayOverflow.no);
writeln(st4); // SysTime(DateTime(1999, 2, 28, 12, 33, 33))

auto st5 = SysTime(DateTime(2000, 2, 29, 12, 30, 33));
st5.roll!"years"(1);
writeln(st5); // SysTime(DateTime(2001, 3, 1, 12, 30, 33))

auto st6 = SysTime(DateTime(2000, 2, 29, 12, 30, 33));
st6.roll!"years"(1, AllowDayOverflow.no);
writeln(st6); // SysTime(DateTime(2001, 2, 28, 12, 30, 33))
nothrow ref scope @safe SysTime roll(string units)(long value)
if (units == "days");
与えられたユニット数をこの SysTime.負の数は は減算する。
ローリングと加算の違いは、ローリングは大きな単位には影響しないということである。 大きな単位に影響しないことである。例えば SysTime例えば 年分の日数をローリングしても、まったく同じ SysTime.
使用可能な単位は"days","minutes","hours""minutes" "seconds" ,"msecs","usecs", そして "hnsecs".
msecs、usecs、またはhnsecsを転がす場合、それらはすべて1秒に加算されることに注釈: 。 秒に加算される。つまり、例えば1000msecsのローリングは100,000usecsのローリングとまったく同じである。 である。
Parameters:
units 追加するユニット。
long value 追加するユニットSysTime.
Examples:
import core.time : msecs, hnsecs;
import std.datetime.date : DateTime;

auto st1 = SysTime(DateTime(2010, 1, 1, 11, 23, 12));
st1.roll!"days"(1);
writeln(st1); // SysTime(DateTime(2010, 1, 2, 11, 23, 12))
st1.roll!"days"(365);
writeln(st1); // SysTime(DateTime(2010, 1, 26, 11, 23, 12))
st1.roll!"days"(-32);
writeln(st1); // SysTime(DateTime(2010, 1, 25, 11, 23, 12))

auto st2 = SysTime(DateTime(2010, 7, 4, 12, 0, 0));
st2.roll!"hours"(1);
writeln(st2); // SysTime(DateTime(2010, 7, 4, 13, 0, 0))

auto st3 = SysTime(DateTime(2010, 2, 12, 12, 0, 0));
st3.roll!"hours"(-1);
writeln(st3); // SysTime(DateTime(2010, 2, 12, 11, 0, 0))

auto st4 = SysTime(DateTime(2009, 12, 31, 0, 0, 0));
st4.roll!"minutes"(1);
writeln(st4); // SysTime(DateTime(2009, 12, 31, 0, 1, 0))

auto st5 = SysTime(DateTime(2010, 1, 1, 0, 0, 0));
st5.roll!"minutes"(-1);
writeln(st5); // SysTime(DateTime(2010, 1, 1, 0, 59, 0))

auto st6 = SysTime(DateTime(2009, 12, 31, 0, 0, 0));
st6.roll!"seconds"(1);
writeln(st6); // SysTime(DateTime(2009, 12, 31, 0, 0, 1))

auto st7 = SysTime(DateTime(2010, 1, 1, 0, 0, 0));
st7.roll!"seconds"(-1);
writeln(st7); // SysTime(DateTime(2010, 1, 1, 0, 0, 59))

auto dt = DateTime(2010, 1, 1, 0, 0, 0);
auto st8 = SysTime(dt);
st8.roll!"msecs"(1);
writeln(st8); // SysTime(dt, msecs(1))

auto st9 = SysTime(dt);
st9.roll!"msecs"(-1);
writeln(st9); // SysTime(dt, msecs(999))

auto st10 = SysTime(dt);
st10.roll!"hnsecs"(1);
writeln(st10); // SysTime(dt, hnsecs(1))

auto st11 = SysTime(dt);
st11.roll!"hnsecs"(-1);
writeln(st11); // SysTime(dt, hnsecs(9_999_999))
const pure nothrow scope @safe SysTime opBinary(string op)(Duration duration) return
if (op == "+" || op == "-");
を加算または減算した結果を返す。 core.time.Duration を加算または減算した結果を返す。 SysTime.
の算術演算の型は以下の通りである。 SysTimeこの演算子 は
シスタイム + 持続時間 --> シスタイム
シスタイム - 持続時間 --> シスタイム
Parameters:
Duration duration である。 core.time.Durationで加減する。 この SysTime.
Examples:
import core.time : hours, seconds;
import std.datetime.date : DateTime;

assert(SysTime(DateTime(2015, 12, 31, 23, 59, 59)) + seconds(1) ==
       SysTime(DateTime(2016, 1, 1, 0, 0, 0)));

assert(SysTime(DateTime(2015, 12, 31, 23, 59, 59)) + hours(1) ==
       SysTime(DateTime(2016, 1, 1, 0, 59, 59)));

assert(SysTime(DateTime(2016, 1, 1, 0, 0, 0)) - seconds(1) ==
       SysTime(DateTime(2015, 12, 31, 23, 59, 59)));

assert(SysTime(DateTime(2016, 1, 1, 0, 59, 59)) - hours(1) ==
       SysTime(DateTime(2015, 12, 31, 23, 59, 59)));
pure nothrow ref scope @safe SysTime opOpAssign(string op)(Duration duration)
if (op == "+" || op == "-");
を加算または減算した結果を返す。 core.time.Durationから から SysTimeを加算または減算した結果を返す。 SysTime.
に代入される。 SysTimeこの演算子を使用する
SysTime + 持続時間 --> シスタイム
シスタイム - 持続時間 --> シスタイム
Parameters:
Duration duration core.time.Durationで加減する。 この SysTime.
const pure nothrow scope @safe Duration opBinary(string op)(SysTime rhs)
if (op == "-");
2つの SysTimes.
の算術演算の有効な型は以下の通りである。 SysTimeこの演算子 は
シスタイム - シスタイム --> 継続時間
const nothrow scope @safe int diffMonths(scope SysTime rhs);
2つの SysTimeの差を月単位で返す。
年単位で差を求めるには、"@property"の"year"を引く。 を引く。 SysTimes.日または週単位で差を求めるには を引く。 SysTimeを使用する。 core.time.Durationを使う。なぜなら 月とそれより小さい単位との間の変換には、特定の日付(これは core.time.Durationがない)ので、月単位の差を求めるには、年と月の両方のプロパティを使った計算が必要になる。 月の差を求めるには、年と月の両方のプロパティを使った計算が必要になる。 これは月の差を求めるための便利な関数である。
月の日数や月が何日目であるかは関係ないことに注意されたい。 は関係ない。これは月のプロパティの差である。 の差と年の差*12を組み合わせたものである。つまり、例えば 12月31日と1月1日は1ヶ月違いである。 と1月31日は1ヶ月違いである。
Parameters:
SysTime rhs この SysTimeを引く。
Examples:
import core.time;
import std.datetime.date : Date;

assert(SysTime(Date(1999, 2, 1)).diffMonths(
           SysTime(Date(1999, 1, 31))) == 1);

assert(SysTime(Date(1999, 1, 31)).diffMonths(
           SysTime(Date(1999, 2, 1))) == -1);

assert(SysTime(Date(1999, 3, 1)).diffMonths(
           SysTime(Date(1999, 1, 1))) == 2);

assert(SysTime(Date(1999, 1, 1)).diffMonths(
           SysTime(Date(1999, 3, 31))) == -2);
const nothrow @property scope @safe bool isLeapYear();
閏年かどうか SysTimeうるう年かどうか。
const nothrow @property scope @safe DayOfWeek dayOfWeek();
曜日 SysTimeにあるか。
const nothrow @property scope @safe ushort dayOfYear();
この日が SysTimeである。
Examples:
import core.time;
import std.datetime.date : DateTime;

writeln(SysTime(DateTime(1999, 1, 1, 12, 22, 7)).dayOfYear); // 1
writeln(SysTime(DateTime(1999, 12, 31, 7, 2, 59)).dayOfYear); // 365
writeln(SysTime(DateTime(2000, 12, 31, 21, 20, 0)).dayOfYear); // 366
@property scope @safe void dayOfYear(int day);
日である。
Parameters:
int day この日が1年のどの日にあたるかを設定する。 SysTimeを設定する。
const nothrow @property scope @safe int dayOfGregorianCal();
グレゴリオ暦の第X日。 SysTimeである。
Examples:
import core.time;
import std.datetime.date : DateTime;

writeln(SysTime(DateTime(1, 1, 1, 0, 0, 0)).dayOfGregorianCal); // 1
writeln(SysTime(DateTime(1, 12, 31, 23, 59, 59)).dayOfGregorianCal); // 365
writeln(SysTime(DateTime(2, 1, 1, 2, 2, 2)).dayOfGregorianCal); // 366

writeln(SysTime(DateTime(0, 12, 31, 7, 7, 7)).dayOfGregorianCal); // 0
writeln(SysTime(DateTime(0, 1, 1, 19, 30, 0)).dayOfGregorianCal); // -365
writeln(SysTime(DateTime(-1, 12, 31, 4, 7, 0)).dayOfGregorianCal); // -366

writeln(SysTime(DateTime(2000, 1, 1, 9, 30, 20)).dayOfGregorianCal); // 730_120
writeln(SysTime(DateTime(2010, 12, 31, 15, 45, 50)).dayOfGregorianCal); // 734_137
nothrow @property scope @safe void dayOfGregorianCal(int days);
グレゴリオ暦のX日。 SysTimeである。 このプロパティを設定しても、"@property"の時刻部分には影響しない。 SysTime.
Parameters:
int days このプロパティを設定するグレゴリオ暦の日は次のとおりである。 SysTime に設定する。
Examples:
import core.time;
import std.datetime.date : DateTime;

auto st = SysTime(DateTime(0, 1, 1, 12, 0, 0));
st.dayOfGregorianCal = 1;
writeln(st); // SysTime(DateTime(1, 1, 1, 12, 0, 0))

st.dayOfGregorianCal = 365;
writeln(st); // SysTime(DateTime(1, 12, 31, 12, 0, 0))

st.dayOfGregorianCal = 366;
writeln(st); // SysTime(DateTime(2, 1, 1, 12, 0, 0))

st.dayOfGregorianCal = 0;
writeln(st); // SysTime(DateTime(0, 12, 31, 12, 0, 0))

st.dayOfGregorianCal = -365;
writeln(st); // SysTime(DateTime(-0, 1, 1, 12, 0, 0))

st.dayOfGregorianCal = -366;
writeln(st); // SysTime(DateTime(-1, 12, 31, 12, 0, 0))

st.dayOfGregorianCal = 730_120;
writeln(st); // SysTime(DateTime(2000, 1, 1, 12, 0, 0))

st.dayOfGregorianCal = 734_137;
writeln(st); // SysTime(DateTime(2010, 12, 31, 12, 0, 0))
const nothrow @property scope @safe ubyte isoWeek();
その年のISO 8601週。 SysTimeである。
See Also:
Examples:
import core.time;
import std.datetime.date : Date;

auto st = SysTime(Date(1999, 7, 6));
const cst = SysTime(Date(2010, 5, 1));
immutable ist = SysTime(Date(2015, 10, 10));

writeln(st.isoWeek); // 27
writeln(cst.isoWeek); // 17
writeln(ist.isoWeek); // 41
const nothrow @property scope @safe SysTime endOfMonth() return;
SysTimeこのDateが属する月の最終日を表す。 endOfMonthの時間部分は常に23:59:59.9999999である。
Examples:
import core.time : msecs, usecs, hnsecs;
import std.datetime.date : DateTime;

assert(SysTime(DateTime(1999, 1, 6, 0, 0, 0)).endOfMonth ==
       SysTime(DateTime(1999, 1, 31, 23, 59, 59), hnsecs(9_999_999)));

assert(SysTime(DateTime(1999, 2, 7, 19, 30, 0), msecs(24)).endOfMonth ==
       SysTime(DateTime(1999, 2, 28, 23, 59, 59), hnsecs(9_999_999)));

assert(SysTime(DateTime(2000, 2, 7, 5, 12, 27), usecs(5203)).endOfMonth ==
       SysTime(DateTime(2000, 2, 29, 23, 59, 59), hnsecs(9_999_999)));

assert(SysTime(DateTime(2000, 6, 4, 12, 22, 9), hnsecs(12345)).endOfMonth ==
       SysTime(DateTime(2000, 6, 30, 23, 59, 59), hnsecs(9_999_999)));
const nothrow @property scope @safe ubyte daysInMonth();
その SysTimeである。
Examples:
import core.time;
import std.datetime.date : DateTime;

writeln(SysTime(DateTime(1999, 1, 6, 0, 0, 0)).daysInMonth); // 31
writeln(SysTime(DateTime(1999, 2, 7, 19, 30, 0)).daysInMonth); // 28
writeln(SysTime(DateTime(2000, 2, 7, 5, 12, 27)).daysInMonth); // 29
writeln(SysTime(DateTime(2000, 6, 4, 12, 22, 9)).daysInMonth); // 30
const nothrow @property scope @safe bool isAD();
現在の年が西暦の日付であるかどうか。
Examples:
import core.time;
import std.datetime.date : 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);
assert(!SysTime(DateTime(-2010, 1, 1, 2, 2, 2)).isAD);
const nothrow @property scope @safe long julianDay();
ユリウス日 この SysTimeのユリウス日である。例: 正午以前は、1996-03-31はユリウス日2_450_173である。 となり、この関数は2_450_173を返す。 となり、この関数は2_450_174を返す。
const nothrow @property scope @safe long modJulianDay();
の修正ユリウス日を返す。 の修正ユリウス日を返す。 で変更されるため)。
const nothrow scope @safe Date opCast(T)()
if (is(immutable(T) == immutable(Date)));
を返す。 std.datetime.date.Dateを返す。 SysTime.
const nothrow scope @safe DateTime opCast(T)()
if (is(immutable(T) == immutable(DateTime)));
と等価なものを返す。 std.datetime.date.DateTimeと等価なものを返す。 SysTime.
const nothrow scope @safe TimeOfDay opCast(T)()
if (is(immutable(T) == immutable(TimeOfDay)));
と等価なものを返す。 std.datetime.date.TimeOfDayと等価なものを返す。 SysTime.
const nothrow scope @safe string toISOString();

const scope void toISOString(W)(ref W writer)
if (isOutputRange!(W, char));
これを SysTimeを YYYYMMDDTHHMMSS.FFFFFFFTZ(Fは端数秒、TZはタイムゾーン)の書式で文字列に変換する。 を表す)。
端数秒の桁数は、端数秒の数によって異なることに注釈する。 端数秒の桁数は最大7桁(これは hnsecs)であるが、正しい値を保持するのに必要な桁数しか持たない(つまり、末尾にゼロは付かない)。 (小数点以下はない。 小数点はない。
もし SysTimeのタイムゾーンが std.datetime.timezone.LocalTimeであれば、TZは空である。タイムゾーンが UTC である場合、"Z"である。それ以外の場合は、UTC (0100や-0700など)である。UTCからのオフセットは、タイムゾーンを一意に識別するのに十分ではないことに注意すること。 だけではタイムゾーンを一意に識別できないことに注意すること。
タイムゾーンのオフセットは+HHMMまたは-HHMMという形式になる。
警告: 以前は、toISOStringはtoISOExtString と同じことを行っていた。 でない場合、タイムゾーンに対して+HH:MMまたは-HH:MMを生成していた。 std.datetime.timezone.LocalTime または std.datetime.timezone.UTC これは に準拠していない。これは、非拡張文字列形式ではISO 8601に準拠していない。 に準拠していない。しかし、今のところ、fromISOStringは時間帯の拡張書式を受け入れ続ける。 そのため、これまで toISOStringの結果を後で読み込むために書き出していたコードは引き続き動作する。 は動作し続ける。現在の動作は2019年7月まで維持される。 その時点で、fromISOStringは標準に準拠するように修正される。
Parameters:
W writer char 出力範囲
Returns:
出力レンジを使用しない場合はstring 、それ以外はvoid
Examples:
import core.time : msecs, hnsecs;
import std.datetime.date : DateTime;

assert(SysTime(DateTime(2010, 7, 4, 7, 6, 12)).toISOString() ==
       "20100704T070612");

assert(SysTime(DateTime(1998, 12, 25, 2, 15, 0), msecs(24)).toISOString() ==
       "19981225T021500.024");

assert(SysTime(DateTime(0, 1, 5, 23, 9, 59)).toISOString() ==
       "00000105T230959");

assert(SysTime(DateTime(-4, 1, 5, 0, 0, 2), hnsecs(520_920)).toISOString() ==
       "-00040105T000002.052092");
const nothrow scope @safe string toISOExtString(int prec = -1);

const scope void toISOExtString(W)(ref W writer, int prec = -1)
if (isOutputRange!(W, char));
この SysTimeを文字列に変換する。 YYYY-MM-DDTHH:MM:SS.FFFFFFTZ(Fは端数秒、TZはタイムゾーンである。 はタイムゾーン)。
デフォルトの動作: 分数秒の桁数は、分数秒の数によって異なることに注釈する。 分数秒の桁数は最大7桁(これは hnsecsとなる)だが、正しい値を保持するのに必要な桁数しか持たない。 (小数点以下はない。 小数点はない。
オプションのパラメータ "prec"により、以下のようにデフォルトの動作を変更することができる。 端数秒の精度を指定する。指定できる値は、[-1, 7]の範囲である。 は[-1, 7]の範囲であり、-1はデフォルトの動作を表す。
この SysTimeのタイムゾーンが std.datetime.timezone.LocalTimeであれば、TZは空である。タイムゾーンが UTC である場合、"Z"である。それ以外の場合は、UTC (01:00や-07:00など)である。UTCからのオフセットは、タイムゾーンを一意に識別するのに十分ではないことに注釈: する。 UTCからのオフセットは、タイムゾーンを一意に識別するのに十分ではないことに 注意すること。
タイムゾーンのオフセットは+HH:MMまたは-HH:MMという形式になる。
Parameters:
W writer char 出力範囲
int prec int 希望する精度を表す。使用可能な値の範囲は-1から7で、-1はデフォルトの動作を表す。
Returns:
出力範囲を使用しない場合はstring 、そうでない場合はvoid
Examples:
import core.time : msecs, hnsecs;
import std.datetime.date : DateTime;

assert(SysTime(DateTime(2010, 7, 4, 7, 6, 12)).toISOExtString() ==
       "2010-07-04T07:06:12");

assert(SysTime(DateTime(1998, 12, 25, 2, 15, 0), msecs(24)).toISOExtString() ==
       "1998-12-25T02:15:00.024");

assert(SysTime(DateTime(0, 1, 5, 23, 9, 59)).toISOExtString() ==
       "0000-01-05T23:09:59");

assert(SysTime(DateTime(-4, 1, 5, 0, 0, 2), hnsecs(520_920)).toISOExtString() ==
       "-0004-01-05T00:00:02.052092");

assert(SysTime(DateTime(-4, 1, 5, 0, 0, 2), hnsecs(520_920)).toISOExtString(4) ==
       "-0004-01-05T00:00:02.0520");

assert(SysTime(DateTime(-4, 1, 5, 0, 0, 2), hnsecs(520_920)).toISOExtString(2) ==
       "-0004-01-05T00:00:02.05");

assert(SysTime(DateTime(-4, 1, 5, 0, 0, 2), hnsecs(520_920)).toISOExtString(7) ==
       "-0004-01-05T00:00:02.0520920");
const nothrow scope @safe string toSimpleString();

const scope void toSimpleString(W)(ref W writer)
if (isOutputRange!(W, char));
この SysTimeを次の形式の文字列に変換する。 YYYY-Mon-DD HH:MM:SS.FFFFFFFTZ(Fは端数秒、TZはタイムゾーン)。 はタイムゾーン)。
端数秒の桁数は、端数秒の数によって異なることに注釈する。 分数秒の桁数は、分数秒の数によって異なる。最大7桁(これは hnsecsとなる)だが、正しい値を保持するのに必要な桁数しかない。 (小数点以下はない。 小数点はない。
もし SysTimeのタイムゾーンが std.datetime.timezone.LocalTimeであれば、TZは空である。タイムゾーンが UTC である場合、"Z"である。それ以外の場合は、UTC (01:00や-07:00など)である。UTCからのオフセットは、タイムゾーンを一意に識別するのに十分ではないことに注釈: する。 UTCからのオフセットは、タイムゾーンを一意に識別するのに十分ではない ことに注意すること。
タイムゾーンのオフセットは+HH:MMまたは-HH:MMという形式になる。
Parameters:
W writer char 出力範囲
Returns:
出力レンジを使用しない場合はstring 、それ以外はvoid
Examples:
import core.time : msecs, hnsecs;
import std.datetime.date : DateTime;

assert(SysTime(DateTime(2010, 7, 4, 7, 6, 12)).toSimpleString() ==
       "2010-Jul-04 07:06:12");

assert(SysTime(DateTime(1998, 12, 25, 2, 15, 0), msecs(24)).toSimpleString() ==
       "1998-Dec-25 02:15:00.024");

assert(SysTime(DateTime(0, 1, 5, 23, 9, 59)).toSimpleString() ==
       "0000-Jan-05 23:09:59");

assert(SysTime(DateTime(-4, 1, 5, 0, 0, 2), hnsecs(520_920)).toSimpleString() ==
        "-0004-Jan-05 00:00:02.052092");
const nothrow scope @safe string toString();

const scope void toString(W)(ref W writer)
if (isOutputRange!(W, char));
を文字列に変換する。 SysTimeを文字列に変換する。
を簡単に変換するためにこの関数が存在する。 SysTimeを を簡単に文字列に変換するために存在する。 この関数は、正確な書式を気にしないコードに対して、情報をわかりやすく表示するために存在する。また を単純に文字列に変換する SysTimeを文字列に変換するのも簡単になる。 to!stringformatwriteln など、toStringを使ってユーザー定義型を変換する関数を使う場合、aを単純に文字列に変換することも簡単になる。 のようなユーザー定義型を変換する関数を使うときにも、簡単にaを文字列に変換することができる。そのため、多くのコードで を直接呼び出すことはあまりないだろう。
文字列のフォーマットは意図的に指定されていない。 文字列の書式を気にするコードは、toISOStringtoISOExtString toSimpleString 、またはその他のカスタム書式設定関数を使うべきである。 関数を使うべきである。その理由は その理由は、コードがどの書式を使用しているかが明確になるからだ、 コードの保守や、生成された文字列を消費する他のソフトウェアとのやり取りで、エラーが発生しにくくなるからだ。 とのやりとりにエラーが発生しにくくなるからだ。これと同じ理由で 同じ理由で SysTimeにはfromString 関数がない。 fromISOString fromISOExtStringfromSimpleString がある。
toStringが返すフォーマットは、将来変更されるかもしれないし、変更されないかもしれない。
Parameters:
W writer char出力範囲
Returns:
出力レンジを使用しない場合はstring 、それ以外はvoid
@safe SysTime fromISOString(S)(scope const S isoString, immutable TimeZone tz = null)
if (isSomeString!S);
を作成する。 SysTimeを作成する。 YYYYMMDDTHHMMSS.FFFFFFTZ(Fは端数秒、TZはタイムゾーンである。 はタイムゾーン)。空白は与えられた文字列から取り除かれる。
正確な書式は toISOStringただし で説明したとおりである。 をすべて0にすることもできる。タイムゾーンと端数秒は任意である、 ただし、小数点以下は無効である。 また toISOStringは文字列を生成しないが が7桁を超える文字列を生成することはないが(ヘクト・ナノ秒の精度ではこれが限界だからである。 ヘクト・ナノ秒の精度ではこれが限界だからである)。 より高い精度を持つ他のソースから文字列を読み込むために、7桁を超える文字列を許容する。 (ただし、7桁以上は切り捨てられる)。
文字列にタイムゾーンがない場合 std.datetime.timezone.LocalTimeが使われる。タイムゾーンが"Z"の場合 UTC が使われる。それ以外の場合は std.datetime.timezone.SimpleTimeZoneが使われる。 が使われる。返される SysTimeを取得するには を指定するには、そのタイムゾーンと SysTime を渡すと、そのタイムゾーンに変換される。 文字列に含まれるタイムゾーンとして読み込まれる)。
タイムゾーンオフセットのフォーマットとしては、+HH、-HH、+HHMM、および -HHMMである。
警告 以前は、toISOStringtoISOExtString と同じで、タイムゾーンに+HH:MMまたは-HH:MMを生成していた。 std.datetime.timezone.LocalTime を生成していた。 std.datetime.timezone.UTC これは に準拠していない。これは非拡張文字列フォーマットのISO 8601に準拠していない。 修正された。しかし、今のところ、fromISOStringはタイムゾーンの拡張書式を受け入れ続ける。 そのため、これまで toISOStringの結果を後で読み込むために書き出していたコードは引き続き動作する。 は動作し続ける。現在の動作は2019年7月まで維持される。 その時点で、fromISOStringは標準に準拠するように修正される。
Parameters:
S isoString 日付と時刻のISOフォーマットでフォーマットされた文字列。
TimeZone tz 指定された時刻を変換するタイムゾーン。 NULLの場合は変換されない)。
Throws:
std.datetime.date.DateTimeException与えられた文字列が でない場合、あるいは SysTimeが有効でない場合は 有効でない。
@safe SysTime fromISOExtString(S)(scope const S isoExtString, immutable TimeZone tz = null)
if (isSomeString!S);
を作成する。 SysTimeを作成する。 YYYY-MM-DDTHH:MM:SS.FFFFFFTZ(ここでFは端数秒、TZはタイムゾーンである。 はタイムゾーン)。与えられた文字列から空白が取り除かれる。
正確な書式は toISOExtString ただし、末尾のゼロは許される。 を含む。タイムゾーンと端数秒は任意である。 ただし、小数点以下は無効である。 また toISOExtStringは決して また、分数秒に7桁を超える文字列を生成することはない(ヘクト・ナノ秒精度ではこれが限界だからだ)。 ヘクト・ナノ秒の精度ではこれが限界だからである)。 桁以上の文字列を許容する。 ただし、7桁以上は切り捨てられる)。
文字列にタイムゾーンがない場合 std.datetime.timezone.LocalTimeが使われる。タイムゾーンが"Z"の場合 UTC が使われる。それ以外の場合は std.datetime.timezone.SimpleTimeZoneが使われる。 が使われる。返される SysTimeを取得するには を指定するには、そのタイムゾーンと SysTime を渡すと、そのタイムゾーンに変換される。 文字列に含まれるタイムゾーンとして読み込まれる)。
タイムゾーンオフセットのフォーマットとしては、+HH、-HH、+HH:MM、および -HH:MMである。
Parameters:
S isoExtString 日付と時刻のISO拡張形式でフォーマットされた文字列。 日付と時刻。
TimeZone tz 指定された時刻を変換するタイムゾーン(NULLの場合は変換されない)。 NULLの場合は変換されない)。
Throws:
std.datetime.date.DateTimeException与えられた文字列が でない場合、あるいは SysTimeが有効でない場合は 有効でない。
@safe SysTime fromSimpleString(S)(scope const S simpleString, immutable TimeZone tz = null)
if (isSomeString!S);
を作成する。 SysTimeを作成する。 YYYY-Mon-DD HH:MM:SS.FFFFFFTZ(ここでFは端数秒、TZはタイムゾーンである。 はタイムゾーンである)。空白は与えられた文字列から取り除かれる。
正確な書式は toSimpleStringただし で説明したとおりである。 をすべて0にすることもできる。タイムゾーンと端数秒は任意である、 ただし、小数点以下は無効である。 また toSimpleStringは決して 文字列は生成されないが(ヘクト・ナノ秒の精度ではこれが限界だからだ)、秒の端数が7桁を超える文字列は生成されない。 ヘクト・ナノ秒の精度ではこれが限界だからである)。 桁以上の文字列を許容する。 ただし、7桁以上は切り捨てられる)。
文字列にタイムゾーンがない場合 std.datetime.timezone.LocalTimeが使われる。タイムゾーンが"Z"の場合 UTC が使われる。それ以外の場合は std.datetime.timezone.SimpleTimeZoneが使われる。 が使われる。返される SysTimeを取得するには を指定するには、そのタイムゾーンと SysTime を渡すと、そのタイムゾーンに変換される。 文字列に含まれるタイムゾーンとして読み込まれる)。
タイムゾーンオフセットのフォーマットとしては、+HH、-HH、+HH:MM、および -HH:MMである。
Parameters:
S simpleString 日付と時刻をフォーマットする方法でフォーマットされた文字列。 toSimpleString でフォーマットされた文字列。
TimeZone tz 指定された時刻を変換するタイムゾーン(NULLの場合は変換されない)。 NULLの場合は変換されない)。
Throws:
std.datetime.date.DateTimeException与えられた文字列が でない場合、あるいは SysTimeが有効でない場合は を返す。
static pure nothrow @property @safe SysTime min();
を返す。 SysTimeで表現可能な最も遠い過去を返す。 を返す。 SysTime.
で表せる最も遠い過去を返す。 SysTimeはUTCである。
static pure nothrow @property @safe SysTime max();
を返す。 SysTimeで表せる最も遠い未来を返す。 を返す。 SysTime.
で表せる最も遠い未来を返す。 SysTimeはUTCである。
pure nothrow @nogc @safe long unixTimeToStdTime(long unixTime);
unix時間(1970年1月1日午前0時(UTC)をエポックとし、秒を単位とする。 エポックと秒を単位とする)から "std time"(西暦1年1月1日午前0時UTCとhnsecsを単位とする)に変換する、 西暦1月1日午前0時をUTCとし、hnsecsを単位とする)に変換する。
C標準はtime_tの表現を規定していない。 実装系定義:」である。POSIXシステムでは、unix timeは POSIXシステムでは、unix timeはtime_tと等価だが、他のシステムでは必ずしもそうではない(例えば、Digital MarsのCランではそうではない 例えば、Digital Mars Cランタイムでは違う)。そのため、POSIXシステム以外のC関数でunix timeをPOSIXシステム以外のC関数で使う場合は注意が必要である。
「std time "のエポックは、ISO8601のプロレプティック・グレゴリオ暦に基づいている。 8601に基づいており SysTimeが内部的に使用しているものである。しかし をhn秒単位の整数として保持することは、技術的には標準の一部ではない。 そのため、"std time"という名前はあまりよくない。 そのため、"std time"という名前は特に良くないが、正式な名前はない。C#では "ticks"を使っている。 を使っているが、実際には時計の目盛りではない。 「ticks "という用語は、実際の時計の目盛りに対して使われる。 core.time.MonoTime, の実際の時計の目盛りには「ticks」という用語が使われているので、ここで「ticks」という用語を使うのは意味がなかった。そのため、良くも悪くも std.datetimeでは "std time"という用語を使っている。
Parameters:
long unixTime 変換するunix時間。
See Also:
SysTime.fromUnixTime
Examples:
import std.datetime.date : DateTime;
import std.datetime.timezone : UTC;

// 1970年1月1日午前0時
writeln(unixTimeToStdTime(0)); // 621_355_968_000_000_000L
assert(SysTime(unixTimeToStdTime(0)) ==
       SysTime(DateTime(1970, 1, 1), UTC()));

writeln(unixTimeToStdTime(int.max)); // 642_830_804_470_000_000L
assert(SysTime(unixTimeToStdTime(int.max)) ==
       SysTime(DateTime(2038, 1, 19, 3, 14, 7), UTC()));

writeln(unixTimeToStdTime(-127_127)); // 621_354_696_730_000_000L
assert(SysTime(unixTimeToStdTime(-127_127)) ==
       SysTime(DateTime(1969, 12, 30, 12, 41, 13), UTC()));
pure nothrow @safe T stdTimeToUnixTime(T = time_t)(long stdTime)
if (is(T == int) || is(T == long));
標準時(西暦1年1月1日午前0時をUTCのエポックとし、hnsecを単位とする。 をunix時間(1970年1月1日午前0時UTCをエポックとし、秒を単位とする)に変換する、 1970UTCをエポックとし、秒を単位とする)に変換する。
C標準はtime_tの表現を規定していない。 実装系定義:」である。POSIXシステムでは、unix時刻は POSIXシステムでは、unixの時刻はtime_tと等価であるが、他のシステムでは必ずしもそうではない(例えば、Digital MarsのCランではそうではない 例えば、Digital Mars Cランタイムでは違う)。そのため、POSIXシステム以外のC関数でunix timeをPOSIXシステム以外のC関数で使う場合は注意が必要である。
「std time "のエポックは、ISO8601のプロレプティック・グレゴリオ暦に基づいている。 8601に基づいており SysTimeが内部的に使用しているものである。しかし をhn秒単位の整数として保持することは、技術的には標準の一部ではない。 そのため、"std time"という名前はあまりよくない。 そのため、"std time"という名前は特に良くないが、正式な名前はない。C#では "ticks"を使っている。 を使っているが、実際には時計の目盛りではない。 「ticks "という用語は、実際の時計の目盛りに対して使われる。 core.time.MonoTime, の実際の時計の目盛りには「ticks」という用語が使われているので、ここで「ticks」という用語を使うのは意味がなかった。そのため、良くも悪くも std.datetimeでは "std time"という用語を使っている。
デフォルトでは、戻り値の型はtime_t(これは通常、32ビットシステムではint、64ビットシステムではlongのエイリアスである)である。 通常、32ビットシステムではint、64ビットシステムではlongのエイリアスである)であるが、異なるサイズが必要な場合は、intまたはlongのどちらかである。 をテンプレート引数として渡すことができる。 引数として渡すことができる。
戻り値の型がint型で、結果がint型に収まらない場合は、32ビットで保持できる最も近い値が返される。 に最も近い値が使われる。int.max を超える場合はその値が使われ、下回る場合はint.min が使われる)。しかし しかし、戻り値の型がlongの場合、整数のオーバーフローに対処する試みは行われない。
Parameters:
T 戻り値の型(intまたはlong)。デフォルトはtime_tである。 通常、32ビットシステムでは32ビット、64ビットシステムでは64ビットである。 である。
long stdTime 変換する標準時。
Returns:
与えられた標準時と等価なunix時間を表す符号付き整数。 を表す符号付き整数。
See Also:
SysTime.toUnixTime
Examples:
// 1970年1月1日午前0時(UTC)
writeln(stdTimeToUnixTime(621_355_968_000_000_000L)); // 0

// 2038-01-19 03:14:07 UTC
writeln(stdTimeToUnixTime(642_830_804_470_000_000L)); // int.max
@safe SysTime SYSTEMTIMEToSysTime(scope const SYSTEMTIME* st, immutable TimeZone tz = LocalTime());
この関数はWindows専用である。
SYSTEMTIME 構造体を SysTime.
Parameters:
SYSTEMTIME* st 変換するSYSTEMTIME 構造体。
TimeZone tz SYSTEMTIME 構造体の時刻が想定するタイムゾーン。 であると想定されるタイムゾーン (SYSTEMTIME が Windows のシステムコールで提供された場合、 はローカルタイムになる。 システムコールで提供された場合、SYSTEMTIME はローカルタイムかUTCのどちらかになる)。 またはUTCのどちらかになる)。
Throws:
std.datetime.date.DateTimeException与えられた SYSTEMTIME に収まらない場合は SysTimeに収まらない場合は に収まらない場合は、SysTime.max が西暦29,228年であることを考えると、その可能性は極めて低い。 SYSTEMTIME の最大値は西暦30,827年である。
@safe SYSTEMTIME SysTimeToSYSTEMTIME(scope SysTime sysTime);
この関数はWindows専用である。
この関数はWindows専用である。 SysTimeSYSTEMTIME 構造体に変換する。
返されるSYSTEMTIME は、与えられた SysTimeSYSTEMTIME のタイムゾーンを使用して設定される。 UTCで取得するには SysTimeのタイムゾーンをUTCに設定する。
Parameters:
SysTime sysTime タイムゾーンを SysTimeで変換する。
Throws:
std.datetime.date.DateTimeExceptionもし与えられた SysTimeSYSTEMTIME に収まらない場合。 の日付が西暦1601年より前である場合にのみ起こる。 SysTimeの日付が西暦1601年より前の場合のみ発生する。
@safe long FILETIMEToStdTime(scope const FILETIME* ft);
この関数はWindows専用である。
FILETIME 構造体を午前0時からのhn秒数に変換する、 西暦1月1日午前0時からのhn秒数に変換する。
Parameters:
FILETIME* ft 変換するFILETIME 構造体。
Throws:
std.datetime.date.DateTimeException与えられた FILETIME を返り値として表すことができない。
@safe SysTime FILETIMEToSysTime(scope const FILETIME* ft, immutable TimeZone tz = LocalTime());
この関数はWindows専用である。
FILETIME "構造体"を"構造体"に変換する。 SysTime.
Parameters:
FILETIME* ft 変換するFILETIME 構造体。
TimeZone tz のタイムゾーン。 SysTimeである。 (FILETIMEは UTC である)。
Throws:
std.datetime.date.DateTimeException与えられた FILETIME に収まらない場合は SysTime.
@safe FILETIME stdTimeToFILETIME(long stdTime);
この関数はWindows専用である。
西暦1月1日午前0時からのhn秒数を FILETIME 構造体に変換する。
Parameters:
long stdTime 西暦1月1日午前0時からのhn秒数。 UTC。
Throws:
std.datetime.date.DateTimeExceptionもし与えられた値が に収まらない場合は、FILETIME
@safe FILETIME SysTimeToFILETIME(scope SysTime sysTime);
この関数はWindows専用である。
を構造体に変換する。 SysTimeFILETIME 構造体に変換する。
FILETIMEは常に UTC である。
Parameters:
SysTime sysTime この SysTimeで変換する。
Throws:
std.datetime.date.DateTimeExceptionもし与えられた SysTimeFILETIME に収まらない場合。
alias DosFileTime = uint;
DOSファイルの日付/時刻形式を表す "型"。
@safe SysTime DosFileTimeToSysTime(DosFileTime dft, immutable TimeZone tz = LocalTime());
DOSファイルの日付/時刻から SysTime.
Parameters:
DosFileTime dft 変換するDOSファイルの時刻。
TimeZone tz DOSファイルの時刻を想定するタイムゾーン。
Throws:
std.datetime.date.DateTimeExceptionDosFileTime 。 は無効である。
Examples:
import std.datetime.date : DateTime;

// SysTime(DateTime(1980, 1, 1, 0, 0, 0))
writeln(DosFileTimeToSysTime(0b00000000001000010000000000000000));
// SysTime(DateTime(2107, 12, 31, 23, 59, 58))
writeln(DosFileTimeToSysTime(0b11111111100111111011111101111101));
writeln(DosFileTimeToSysTime(0x3E3F8456)); // SysTime(DateTime(2011, 1, 31, 16, 34, 44))
@safe DosFileTime SysTimeToDosFileTime(scope SysTime sysTime);
から SysTimeからDOSファイルの日付/時刻に変換する。
Parameters:
SysTime sysTime その SysTimeに変換する。
Throws:
std.datetime.date.DateTimeException与えられた SysTimeに変換できない場合は、DosFileTime
Examples:
import std.datetime.date : DateTime;

// 0b00000000001000010000000000000000
writeln(SysTimeToDosFileTime(SysTime(DateTime(1980, 1, 1, 0, 0, 0))));
// 0b11111111100111111011111101111101
writeln(SysTimeToDosFileTime(SysTime(DateTime(2107, 12, 31, 23, 59, 58))));
writeln(SysTimeToDosFileTime(SysTime(DateTime(2011, 1, 31, 16, 34, 44)))); // 0x3E3F8456
@safe SysTime parseRFC822DateTime()(scope const char[] value);

SysTime parseRFC822DateTime(R)(scope R value)
if (isRandomAccessRange!R && hasSlicing!R && hasLength!R && (is(immutable(ElementType!R) == immutable(char)) || is(immutable(ElementType!R) == immutable(ubyte))));
与えられたchar の配列、またはchar のランダムアクセス範囲、または ubyte の配列は で指定された形式であることが期待される。 文法規則date-timeで指定されている形式であることが期待される。これは、電子メールやHTTPなどのインターネットメッセージでよく使われる これは、電子メールやHTTPなどのインターネットメッセージで一般的に使われる日付時刻形式である。対応する SysTimeが返される。
RFC 822がオリジナルの仕様(これが関数名の由来)であるのに対し、RFC 5322は現在の仕様である。 が現在の仕様である。
曜日は日付から推測できるため、有効な曜日であることを確認する以外には無視される。 曜日は日付から推測できるためである。指定された曜日が 指定された曜日が、指定された日付の実際の曜日と一致するかどうかはチェックされない。 指定された曜日が、指定された日付の実際の曜日と一致するかどうかはチェックされない(ただし、仕様上は、曜日が指定された日付と一致しない場合は無効となる)。 が指定された日付の実際の曜日と一致しない場合、仕様上は無効となるが)。
タイムゾーンが"-0000" (または、仕様書第4.3項によってそれと同等とみなされる)。 "-0000" 仕様書第4.3項によってそれと同等とみなされる)、タイムゾーンが。 std.datetime.timezone.SimpleTimeZone0 が使用される。 ではなく std.datetime.timezone.UTCではなく、"+0000"std.datetime.timezone.UTC.
を使用している。 SysTimeは現在、秒 (うるう秒のように)秒の値を60にすることは現在サポートされていないため、日付時刻の値が秒の値を60にした場合、秒の値は59として扱われる。 が秒に60の値を持つ場合、それは59として扱われる。
この関数がRFC 5322に違反しているのは、次のような場合である。 "\n""\r\n" の代わりに受け入れることである。 HTTP仕様がそれを要求しているからである。
Throws:
std.datetime.date.DateTimeException与えられた文字列が 指定された文字列が日付-時刻フィールドの文法に従わない場合、あるいは結果の SysTimeが無効である。
Examples:
import core.time : hours;
import std.datetime.date : DateTime, DateTimeException;
import std.datetime.timezone : SimpleTimeZone, UTC;
import std.exception : assertThrown;

auto tz = new immutable SimpleTimeZone(hours(-8));
assert(parseRFC822DateTime("Sat, 6 Jan 1990 12:14:19 -0800") ==
       SysTime(DateTime(1990, 1, 6, 12, 14, 19), tz));

assert(parseRFC822DateTime("9 Jul 2002 13:11 +0000") ==
       SysTime(DateTime(2002, 7, 9, 13, 11, 0), UTC()));

auto badStr = "29 Feb 2001 12:17:16 +0200";
assertThrown!DateTimeException(parseRFC822DateTime(badStr));