컨텐츠로 건너뛰기

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, encodable
new 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
s1s -> 1000ms
m1m -> 60s
h1h -> 60m
d1d -> 24h
w1w -> 7d
y1y -> 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인 경우 nanoseconds0을 가진 객체를 반환합니다.

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;

인수

없음.

반환값

나노초의 밀리초 표현입니다.