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 TimeZonetz
= 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または DateTimeを
SysTime
に変換するにはSysTime
のコンストラクタを使用する。 のコンストラクタを使用する。 std.datetime.timezone.TimeZoneを渡さない場合は を渡さなければローカルのタイムゾーンが使われる)。ただし DateTimeからSysTime
への変換は必ずしも ただし、aからaへの変換は、夏時間の関係で必ずしも100%正確ではないことに注意すること(1年のうち1時間は存在せず、もう1時間は2回発生する)。 が2回発生する)。変換エラーのリスクを回避するため、時刻をSysTime
s.夏時間を除けば、変換に問題はない。 問題はないはずだ。ローカルタイムやUTC以外のタイムゾーンを使う場合は std.datetime.timezone.PosixTimeZoneを使用する、 で使用し(TZデータベースファイルを提供する場合は) std.datetime.timezone.WindowsTimeZoneを使う。での時間はSysTime
の時刻は、内部的には西暦1月1日午前0時からのhn秒単位で管理されている。 UTCである。のタイムゾーンを変更しても変換エラーは起こらない。SysTime
. std.datetime.timezone.LocalTimeは TimeZoneローカル時間を表すクラスである、 そしてUTC は TimeZoneクラスである。 である。SysTime
は LocalTimeもし は 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 TimeZonetz
= 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
, DurationfracSecs
, return scope immutable TimeZonetz
= 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 TimeZonetz
= 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 TimeZonetz
= 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:このSysTime のthis 。 - const pure nothrow scope @safe bool
opEquals
()(auto ref const(SysTime)rhs
); - タイムゾーンは無視されることに注意。内部の 標準時(UTC)だけが比較される。
- const pure nothrow scope @safe int
opCmp
()(auto ref const(SysTime)rhs
); - を比較するとき、タイムゾーンは関係ない。 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
(intyear
); - グレゴリオ暦の年。正の数は西暦。 は紀元前である。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:。std.datetime.date.DateTimeException isAD が真の場合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
(intyear
); - グレゴリオ暦の紀元前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
(Monthmonth
); - グレゴリオ暦の月。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
(intday
); - グレゴリオ暦の月の一日。Parameters:
int day
この SysTimeに設定する。 Throws:std.datetime.date.DateTimeException指定された日が でない場合は - const nothrow @property scope @safe ubyte
hour
(); - 午前0時を何時間も過ぎている。
- @property scope @safe void
hour
(inthour
); - 真夜中を何時間も過ぎた。Parameters:
int hour
この SysTimeの時間を設定する。 Throws:std.datetime.date.DateTimeException指定された時間が を設定する。 - const nothrow @property scope @safe ubyte
minute
(); - 現在の時刻から数分経過している。
- @property scope @safe void
minute
(intminute
); - 現在の時刻を数分過ぎたParameters:
int minute
この SysTimeに設定する分。 Throws:std.datetime.date.DateTimeException指定された分が が有効な分でない場合 - const nothrow @property scope @safe ubyte
second
(); - 現在の分を数秒過ぎたところ。
- @property scope @safe void
second
(intsecond
); - 現在の分を数秒過ぎた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
(DurationfracSecs
); - 秒未満の端数秒。 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
(longstdTime
); - 西暦1月1日午前0時(UTC)からの合計hn秒。これは の内部表現である。 SysTime.Parameters:
long stdTime
西暦1月1日UTCからのhn秒数。 - const pure nothrow @property scope @safe immutable(TimeZone)
timezone
() return; - pure nothrow @property scope @safe void
timezone
(immutable TimeZonetimezone
); - 現在のタイムゾーンは 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 TimeZonetz
); - を返す。 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
(longunixTime
, immutable TimeZonetz
= 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)(longvalue
, AllowDayOverflowallowOverflow
= 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)(longvalue
, AllowDayOverflowallowOverflow
= 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)(longvalue
)
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)(Durationduration
) 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)(Durationduration
)
if (op == "+" || op == "-"); - に代入される。 SysTimeこの演算子を使用する
SysTime + 持続時間 --> シスタイム シスタイム - 持続時間 --> シスタイム Parameters:Duration duration
を core.time.Durationで加減する。 この SysTime. - const pure nothrow scope @safe Duration
opBinary
(string op)(SysTimerhs
)
if (op == "-"); - 2つの SysTimes.の算術演算の有効な型は以下の通りである。 SysTimeこの演算子 は
シスタイム - シスタイム --> 継続時間 - const nothrow scope @safe int
diffMonths
(scope SysTimerhs
); - 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
(intday
); - 日である。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
(intdays
); - 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
(); - 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 voidtoISOString
(W)(ref Wwriter
)
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
(intprec
= -1);
const scope voidtoISOExtString
(W)(ref Wwriter
, intprec
= -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 voidtoSimpleString
(W)(ref Wwriter
)
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 voidtoString
(W)(ref Wwriter
)
if (isOutputRange!(W, char)); - を文字列に変換する。 SysTimeを文字列に変換する。を簡単に変換するためにこの関数が存在する。 SysTimeを を簡単に文字列に変換するために存在する。 この関数は、正確な書式を気にしないコードに対して、情報をわかりやすく表示するために存在する。また を単純に文字列に変換する SysTimeを文字列に変換するのも簡単になる。 to!string 、format 、writeln など、toStringを使ってユーザー定義型を変換する関数を使う場合、aを単純に文字列に変換することも簡単になる。 のようなユーザー定義型を変換する関数を使うときにも、簡単にaを文字列に変換することができる。そのため、多くのコードで を直接呼び出すことはあまりないだろう。 文字列のフォーマットは意図的に指定されていない。 文字列の書式を気にするコードは、toISOString 、 toISOExtString toSimpleString 、またはその他のカスタム書式設定関数を使うべきである。 関数を使うべきである。その理由は その理由は、コードがどの書式を使用しているかが明確になるからだ、 コードの保守や、生成された文字列を消費する他のソフトウェアとのやり取りで、エラーが発生しにくくなるからだ。 とのやりとりにエラーが発生しにくくなるからだ。これと同じ理由で 同じ理由で SysTimeにはfromString 関数がない。 fromISOString fromISOExtString とfromSimpleString がある。 toStringが返すフォーマットは、将来変更されるかもしれないし、変更されないかもしれない。Parameters:
W writer
char 。 出力範囲 Returns:出力レンジを使用しない場合はstring 、それ以外はvoid 。 - @safe SysTime
fromISOString
(S)(scope const SisoString
, immutable TimeZonetz
= 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である。 警告 以前は、toISOString 。 toISOExtString と同じで、タイムゾーンに+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 SisoExtString
, immutable TimeZonetz
= 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 SsimpleString
, immutable TimeZonetz
= 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はUTCである。
- static pure nothrow @property @safe SysTime
max
(); - で表せる最も遠い未来を返す。 SysTimeはUTCである。
- pure nothrow @nogc @safe long
unixTimeToStdTime
(longunixTime
); - 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.fromUnixTimeExamples: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)(longstdTime
)
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.toUnixTimeExamples:// 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 TimeZonetz
= 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 SysTimesysTime
); この関数はWindows専用である。 この関数はWindows専用である。 SysTimeをSYSTEMTIME 構造体に変換する。 返されるSYSTEMTIME は、与えられた SysTimeSYSTEMTIME のタイムゾーンを使用して設定される。 UTCで取得するには SysTimeのタイムゾーンをUTCに設定する。Parameters:SysTime sysTime
タイムゾーンを SysTimeで変換する。 Throws:std.datetime.date.DateTimeExceptionもし与えられた SysTimeがSYSTEMTIME に収まらない場合。 の日付が西暦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 TimeZonetz
= LocalTime()); この関数はWindows専用である。 FILETIME "構造体"を"構造体"に変換する。 SysTime.Parameters:FILETIME* ft
変換するFILETIME 構造体。 TimeZone tz
のタイムゾーン。 SysTimeである。 (FILETIMEは UTC である)。 Throws:- @safe FILETIME
stdTimeToFILETIME
(longstdTime
); この関数はWindows専用である。 西暦1月1日午前0時からのhn秒数を FILETIME 構造体に変換する。Parameters:long stdTime
西暦1月1日午前0時からのhn秒数。 UTC。 Throws:std.datetime.date.DateTimeExceptionもし与えられた値が に収まらない場合は、FILETIME 。- @safe FILETIME
SysTimeToFILETIME
(scope SysTimesysTime
); この関数はWindows専用である。 Parameters:SysTime sysTime
この SysTimeで変換する。 Throws:- alias
DosFileTime
= uint; - DOSファイルの日付/時刻形式を表す "型"。
- @safe SysTime
DosFileTimeToSysTime
(DosFileTimedft
, immutable TimeZonetz
= 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 SysTimesysTime
); - から SysTimeからDOSファイルの日付/時刻に変換する。Parameters:
SysTime sysTime
その SysTimeに変換する。 Throws: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
);
SysTimeparseRFC822DateTime
(R)(scope Rvalue
)
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));
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku