Duration
Duration
は期間を表現するクラスです。
インポート
import { Duration } from "@tai-kun/surrealdb/decodeonly-datatypes";import { Duration } from "@tai-kun/surrealdb/encodable-datatypes";import { Duration } from "@tai-kun/surrealdb/standard-datatypes";
.constructor()
新しい Duration
オブジェクトを作成します。
new Duration( source: | [seconds?: number | bigint, nanoseconds?: undefined] | [seconds: number | bigint, nanoseconds?: number | undefined],); // decode-only, encodablenew Duration( source: | [seconds?: number | bigint, nanoseconds?: undefined] | [seconds: number | bigint, nanoseconds?: number | undefined] | number | bigint | string | Duration,); // standard
引数
source
秒数とナノ秒数のペアです。プリセットが standard ならより多くの値を Duration
オブジェクトにすることができます。
number
型の入力はミリ秒単位で計算されます。これは Date
オブジェクト同士の差分を Duration
オブジェクトにする用途を想定しています:
const begin = new Date("2024-06-01T12:00:00.000Z");const end = new Date("2024-06-01T21:00:00.000Z");new Duration(end - begin);
bigint
型の入力はナノ秒単位で計算されます。これは例えば process.hrtime.bigint()
で返されるナノ秒のような、高精度な時間を Duration
オブジェクトにする用途を想定しています:
const begin = process.hrtime.bigint();await run();const end = process.hrtime.bigint();new Duration(end - begin);
string
型の入力は期間の文字列表現である必要があります。期間の文字列表現は数字と単位を一組として、それが連続に並ぶフォーマットを指します。例えば 1h4h30m20s1350ms
は「1 日と 4 時間 30 分、21 秒 350 ミリ秒」です。利用可能な単位は次のとおりです:
単位 | 説明 | 変換 |
---|---|---|
ns | ナノ秒 | |
us | マイクロ秒 | 1us -> 1000ns |
ms | ミリ秒 | 1ms -> 1000us |
s | 秒 | 1s -> 1000ms |
m | 分 | 1m -> 60s |
h | 時 | 1h -> 60m |
d | 日 | 1d -> 24h |
w | 週 | 1w -> 7d |
y | 年 | 1y -> 365d |
us
(0x75
, 0x73
) は µs
(0xc2
, 0xb5
, 0x73
) または μs
(0xce
, 0xbc
, 0x73
) とすることもできます (括弧内の 16 進数は単位文字列を UTF-8 でエンコードした結果です)。
返値
new
を通じて呼び出された場合、Duration
はそのインスタンスを返します。
.seconds
インスタンス プロパティー >=decode-only
期間の秒数部です。standard 未満のプリセットでは読み取り専用です。値は 0 から 264-1 までの整数です。
.seconds: bigint;
.nanoseconds
インスタンス プロパティー >=decode-only
期間のナノ秒数部です。standard 未満のプリセットでは読み取り専用です。値は 0 から 999999999 までの整数です。
.nanoseconds: number;
.parse()
インスタンス プロパティー >=encodable
期間を各単位にマッピングします。各単位の値は、0 以上、その単位の最大値未満になります。なお、期間が 0 の場合は 0 ナノ秒、つまり nanoseconds
プロパティーのみが 0
を持ったオブジェクトが返されます。
.parse(): { years?: number; weeks?: number; days?: number; hours?: number; minutes?: number; seconds?: number; milliseconds?: number; microseconds?: number; nanoseconds?: number;};
引数
なし。
返値
期間を各単位にマッピングした結果を返します。単位の値が 0 の場合はプロパティが省略されますが、期間が 0 の場合は nanoseconds
のみが 0
を持ったオブジェクトを返します。
例
import { Duration } from "@tai-kun/surrealdb/encodable-datatypes";
const duration = new Duration(0);console.log(duration.parse());//-> { nanoseconds: 0 }
import { Duration } from "@tai-kun/surrealdb/encodable-datatypes";
const duration = new Duration(12_345_000n);console.log(duration.parse());//-> { milliseconds: 12, microseconds: 345 }
.valueOf()
インスタンス メソッド >=encodable
期間をナノ秒単位で取得します。
.valueOf(): bigint;
引数
なし。
返値
期間をナノ秒単位で返します。
import { Duration } from "@tai-kun/surrealdb/encodable-datatypes";
const duration = new Duration(12_345_000n);console.log(duration.valueOf());//-> 12345000n
.toString()
インスタンス メソッド >=encodable
期間の文字列表現を取得します。
.toJSON()
と .toSurql()
はこのメソッドと同じ結果を返します。
.toString(): string;
引数
なし。
返値
ミリ秒精度の時刻の文字列表現を取得します。
例
import { Duration } from "@tai-kun/surrealdb/encodable-datatypes";
const duration = new Duration(12_345_000n);console.log(duration.toString());//-> 12ms345µs
.toISOString()
インスタンス メソッド >=encodable
期間の文字列を ISO 形式で取得します。
.toISOString(): string;
引数
なし。
返値
期間の文字列を ISO 形式で返します。
例
import { Duration } from "@tai-kun/surrealdb/encodable-datatypes";
const duration = new Duration("2m3s456ms");console.log(duration.toISOString());//-> P2M3S
.getCompact()
インスタンス メソッド =standard
秒数とナノ秒数のペアを取得します。
.getCompact(): [seconds: bigint, nanoseconds: number];
引数
なし。
返値
秒数とナノ秒数のペアを返します。
.setCompact()
インスタンス メソッド =standard
秒数とナノ秒数のペアで日時を設定します。
.setCompact(compact: [seconds: bigint, nanoseconds: number]): void;
引数
compact
秒数とナノ秒数のペアです。
返値
なし。
.getYears()
インスタンス メソッド =standard
年を取得します。0 以上の整数にならない場合は 0 が返されます。
.getYears(): number;
引数
なし。
返値
年を表す 0 以上の整数を返します。
.addYears()
インスタンス メソッド =standard
期間から年を指定の数だけ加算します。
.addYears(value: number): void;
引数
value
年数です。
返値
なし。
.subYears()
インスタンス メソッド =standard
期間から年を指定の数だけ減算します。
.subYears(value: number): void;
引数
value
年数です。
返値
なし。
.asYears()
インスタンス メソッド =standard
年数のミリ秒表現を取得します。
.asYears(): number;
引数
なし。
返値
年数のミリ秒表現です。
.getWeeks()
インスタンス メソッド =standard
週を取得します。0 以上の整数にならない場合は 0 が返されます。
.getWeeks(): number;
引数
なし。
返値
週を表す 0 以上の整数を返します。
.addWeeks()
インスタンス メソッド =standard
期間から週を指定の数だけ加算します。
.addWeeks(value: number): void;
引数
value
週数です。
返値
なし。
.subWeeks()
インスタンス メソッド =standard
期間から週を指定の数だけ減算します。
.subWeeks(value: number): void;
引数
value
週数です。
返値
なし。
.asWeeks()
インスタンス メソッド =standard
週数のミリ秒表現を取得します。
.asWeeks(): number;
引数
なし。
返値
週数のミリ秒表現です。
.getDays()
インスタンス メソッド =standard
日を取得します。0 以上の整数にならない場合は 0 が返されます。
.getDays(): number;
引数
なし。
返値
日を表す 0 以上の整数を返します。
.addDays()
インスタンス メソッド =standard
期間から日を指定の数だけ加算します。
.addDays(value: number): void;
引数
value
日数です。
返値
なし。
.subDays()
インスタンス メソッド =standard
期間から日を指定の数だけ減算します。
.subDays(value: number): void;
引数
value
日数です。
返値
なし。
.asDays()
インスタンス メソッド =standard
日数のミリ秒表現を取得します。
.asDays(): number;
引数
なし。
返値
日数のミリ秒表現です。
.getHours()
インスタンス メソッド =standard
時を取得します。0 以上の整数にならない場合は 0 が返されます。
.getHours(): number;
引数
なし。
返値
時を表す 0 以上の整数を返します。
.addHours()
インスタンス メソッド =standard
期間から時を指定の数だけ加算します。
.addHours(value: number): void;
引数
value
時数です。
返値
なし。
.subHours()
インスタンス メソッド =standard
期間から時を指定の数だけ減算します。
.subHours(value: number): void;
引数
value
時数です。
返値
なし。
.asHours()
インスタンス メソッド =standard
時数のミリ秒表現を取得します。
.asHours(): number;
引数
なし。
返値
時数のミリ秒表現です。
.getMinutes()
インスタンス メソッド =standard
分を取得します。0 以上の整数にならない場合は 0 が返されます。
.getMinutes(): number;
引数
なし。
返値
分を表す 0 以上の整数を返します。
.addMinutes()
インスタンス メソッド =standard
期間から分を指定の数だけ加算します。
.addMinutes(value: number): void;
引数
value
分数です。
返値
なし。
.subMinutes()
インスタンス メソッド =standard
期間から分を指定の数だけ減算します。
.subMinutes(value: number): void;
引数
value
分数です。
返値
なし。
.asMinutes()
インスタンス メソッド =standard
分数のミリ秒表現を取得します。
.asMinutes(): number;
引数
なし。
返値
分数のミリ秒表現です。
.getSeconds()
インスタンス メソッド =standard
秒を取得します。0 以上の整数にならない場合は 0 が返されます。
.getSeconds(): number;
引数
なし。
返値
秒を表す 0 以上の整数を返します。
.addSeconds()
インスタンス メソッド =standard
期間から秒を指定の数だけ加算します。
.addSeconds(value: number): void;
引数
value
秒数です。
返値
なし。
.subSeconds()
インスタンス メソッド =standard
期間から秒を指定の数だけ減算します。
.subSeconds(value: number): void;
引数
value
秒数です。
返値
なし。
.asSeconds()
インスタンス メソッド =standard
秒数のミリ秒表現を取得します。
.asSeconds(): number;
引数
なし。
返値
秒数のミリ秒表現です。
.getMilliseconds()
インスタンス メソッド =standard
ミリ秒を取得します。0 以上の整数にならない場合は 0 が返されます。
.getMilliseconds(): number;
引数
なし。
返値
ミリ秒を表す 0 以上の整数を返します。
.addMilliseconds()
インスタンス メソッド =standard
期間からミリ秒を指定の数だけ加算します。
.addMilliseconds(value: number): void;
引数
value
ミリ秒数です。
返値
なし。
.subMilliseconds()
インスタンス メソッド =standard
期間からミリ秒を指定の数だけ減算します。
.subMilliseconds(value: number): void;
引数
value
ミリ秒数です。
返値
なし。
.asMilliseconds()
インスタンス メソッド =standard
ミリ秒数のミリ秒表現を取得します。
.asMilliseconds(): number;
引数
なし。
返値
ミリ秒数のミリ秒表現です。
.getMicroseconds()
インスタンス メソッド =standard
マイクロ秒を取得します。0 以上の整数にならない場合は 0 が返されます。
.getMicroseconds(): number;
引数
なし。
返値
マイクロ秒を表す 0 以上の整数を返します。
.addMicroseconds()
インスタンス メソッド =standard
期間からマイクロ秒を指定の数だけ加算します。
.addMicroseconds(value: number): void;
引数
value
マイクロ秒数です。
返値
なし。
.subMicroseconds()
インスタンス メソッド =standard
期間からマイクロ秒を指定の数だけ減算します。
.subMicroseconds(value: number): void;
引数
value
マイクロ秒数です。
返値
なし。
.asMicroseconds()
インスタンス メソッド =standard
マイクロ秒数のミリ秒表現を取得します。
.asMicroseconds(): number;
引数
なし。
返値
マイクロ秒数のミリ秒表現です。
.getNanoseconds()
インスタンス メソッド =standard
ナノ秒を取得します。0 以上の整数にならない場合は 0 が返されます。
.getNanoseconds(): number;
引数
なし。
返値
ナノ秒を表す 0 以上の整数を返します。
.addNanoseconds()
インスタンス メソッド =standard
期間からナノ秒を指定の数だけ加算します。
.addNanoseconds(value: number): void;
引数
value
ナノ秒数です。
返値
なし。
.subNanoseconds()
インスタンス メソッド =standard
期間からナノ秒を指定の数だけ減算します。
.subNanoseconds(value: number): void;
引数
value
ナノ秒数です。
返値
なし。
.asNanoseconds()
インスタンス メソッド =standard
ナノ秒数のミリ秒表現を取得します。
.asNanoseconds(): number;
引数
なし。
返値
ナノ秒数のミリ秒表現です。