std.time
時刻と期間。Time(ある瞬間)と Duration(長さ)は別の型で、 Time + Time のような意味のない計算は書けない。
import std.time;
var t = time.date(2026, 8, 15)!;
print(t.format("YYYY/MM/DD")); // 2026/08/15
time.now time.monotonic time.date time.datetime time.parse time.seconds time.minutes time.hours time.days Time.format Time.year Time.month Time.day Time.hour Time.minute Time.second Time.weekday Time.to_local Time.to_utc Time.compare Duration.seconds Duration.minutes Duration.hours Duration.days Duration.compare
関数
- time.now() → Time¶
-
いまの時刻。
var now = time.now(); print(now.year() >= 2026); // true
- time.monotonic() → Duration¶
-
起動してからの経過。時計合わせの影響を受けないので、時間を測るのに使う。
var start = time.monotonic(); sleep(0.2); print(time.monotonic().seconds() > start.seconds()); // true
- time.date(y: int, mo: int, d: int) → Time?¶
-
年月日から作る。ありえない日付なら none。
y int 年 mo int 月(1〜12) d int 日(1〜31) print(time.date(2026, 8, 15)!.format("YYYY-MM-DD")); // 2026-08-15 print(time.date(2026, 2, 30) == none); // true
- time.datetime(y: int, mo: int, d: int, h: int, mi: int, s: int) → Time?¶
-
年月日と時分秒から作る。ありえない日時なら none。
var t = time.datetime(2026, 8, 15, 12, 34, 56)!; print(t.format("hh:mm:ss")); // 12:34:56(UTC で持つ)
- time.parse(s: string, format: string) → Time?¶
-
文字列から読む。書式に合わなければ none。
s string 読む文字列 format string 書式。format() と同じ記号(YYYY MM DD hh mm ss) var t = time.parse("2026-08-15 12:00:00", "YYYY-MM-DD hh:mm:ss")!; print(t.hour()); // 12
- time.seconds(v: float) → Duration¶
-
秒から Duration を作る。
print(time.seconds(90.0).minutes()); // 1.5
- time.minutes(v: float) → Duration¶
-
分から Duration を作る。
print(time.minutes(2.0).seconds()); // 120.0
- time.hours(v: float) → Duration¶
-
時から Duration を作る。
print(time.hours(1.0).minutes()); // 60.0
- time.days(v: float) → Duration¶
-
日から Duration を作る。
print(time.days(1.0).hours()); // 24.0
Time
ある瞬間。中では UTC で持っている。
Time - Time で Duration、Time + Duration で Time になる。
- Time.format(f: string) → string¶
-
書式に沿って文字列にする。
f string YYYY 年 / MM 月 / DD 日 / hh 時 / mm 分 / ss 秒 / SSS ミリ秒 var t = time.datetime(2026, 8, 15, 12, 34, 56)!; print(t.format("YYYY/MM/DD hh:mm:ss")); // 2026/08/15 12:34:56
- Time.year() → int¶
-
年。
print(time.date(2026, 8, 15)!.year()); // 2026
- Time.month() → int¶
-
月(1〜12)。
print(time.date(2026, 8, 15)!.month()); // 8
- Time.day() → int¶
-
日(1〜31)。
print(time.date(2026, 8, 15)!.day()); // 15
- Time.hour() → int¶
-
時(0〜23)。
print(time.datetime(2026, 8, 15, 12, 34, 56)!.hour()); // 12
- Time.minute() → int¶
-
分(0〜59)。
print(time.datetime(2026, 8, 15, 12, 34, 56)!.minute()); // 34
- Time.second() → int¶
-
秒(0〜59)。
print(time.datetime(2026, 8, 15, 12, 34, 56)!.second()); // 56
- Time.weekday() → int¶
-
曜日。0(日)〜 6(土)。
print(time.date(2026, 8, 15)!.weekday()); // 6(土曜)
- Time.to_local() → Time¶
-
表示を地域時刻に切り替える。人に見せるときに使う。
指している瞬間は変わらないので、引き算や比較の結果は同じになる。
var t = time.datetime(2026, 8, 15, 12, 0, 0)!; // UTC の 12:00 print(t.to_local().format("YYYY-MM-DD hh:mm")); // 地域時刻(日本なら 2026-08-15 21:00) print((t.to_local() - t).seconds()); // 0.0(同じ瞬間)
- Time.to_utc() → Time¶
-
表示を UTC に戻す。記録に残すときに使う。何度呼んでも結果は変わらない。
var t = time.datetime(2026, 8, 15, 12, 0, 0)!; print(t.to_local().to_utc().format("hh:mm")); // 12:00
- Time.compare(other: Time) → int¶
-
並べ替えのための比較。早い方が小さい。
var a = time.date(2026, 1, 1)!; var b = time.date(2026, 8, 15)!; print(a.compare(b)); // -1
Duration
時間の長さ。
Duration + Duration は Duration。Time との足し引きもできる。
- Duration.seconds() → float¶
-
秒に直す。
print(time.minutes(1.0).seconds()); // 60.0
- Duration.minutes() → float¶
-
分に直す。
print(time.hours(1.0).minutes()); // 60.0
- Duration.hours() → float¶
-
時に直す。
print(time.days(1.0).hours()); // 24.0
- Duration.days() → float¶
-
日に直す。
print(time.hours(36.0).days()); // 1.5
- Duration.compare(other: Duration) → int¶
-
並べ替えのための比較。短い方が小さい。
print(time.seconds(1.0).compare(time.minutes(1.0))); // -1