Duration
Duration
은 기간을 나타내는 클래스입니다.
import
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;
인수
없음.
반환값
나노초의 밀리초 표현입니다.