날짜 및 시간
Datetime
은 날짜와 시간을 표현하는 클래스입니다. SurrealQL의 datetime
타입에 대응합니다.
import
import { Datetime } from "@tai-kun/surrealdb/decodeonly-datatypes";import { Datetime } from "@tai-kun/surrealdb/encodable-datatypes";import { Datetime } from "@tai-kun/surrealdb/standard-datatypes";
.constructor()
새로운 Datetime
객체를 생성합니다.
new Datetime(source: [number, number] | string); // decode-only, encodablenew Datetime( source?: | [number, number] | number | bigint | Date | Datetime | undefined,); // standardnew Datetime( year: number, monthIndex: number, date?: number | undefined, hours?: number | undefined, minutes?: number | undefined, seconds?: number | undefined, milliseconds?: number | undefined, microseconds?: number | undefined, nanoseconds?: number | undefined,); // standard
매개변수
source
초와 나노초의 쌍 또는 문자열입니다. 프리셋이 standard인 경우 Date
객체나 bigint
입력도 지원합니다.
year
, monthIndex
, …
Date
클래스의 매개변수와 동일합니다. 단, nanoseconds
입력도 지원합니다. undefined
를 제공한 매개변수 이후에 number
를 제공할 수 없습니다. 이는 Date
클래스와 거의 동일한 사양입니다.
반환값
new
를 통해 호출된 경우 Datetime
은 해당 인스턴스를 반환합니다. 프리셋이 standard인 경우 Date
의 인스턴스이기도 합니다.
.seconds
인스턴스 속성 >=decode-only
나노초 정밀도의 시간의 초 부분입니다. standard 미만의 프리셋에서는 읽기 전용입니다. 값은 -253-1부터 253-1까지의 정수 또는 NaN
입니다.
.seconds: number;
.nanoseconds
인스턴스 속성 >=decode-only
나노초 정밀도의 시간의 나노초 부분입니다. standard 미만의 프리셋에서는 읽기 전용입니다. 값은 0부터 999999999까지의 정수 또는 NaN
입니다.
.nanoseconds: number;
.valueOf()
인스턴스 메서드 >=encodable
밀리초 정밀도의 시간을 가져옵니다.
.valueOf(): number;
매개변수
없음.
반환값
밀리초 정밀도의 시간을 반환합니다.
예시
import { Datetime } from "@tai-kun/surrealdb/encodable-datatypes";
const date = new Datetime("2024-06-01T12:34:56.780123456Z");console.log(date.valueOf());//-> 1717245296780
.toString()
인스턴스 메서드 >=encodable
밀리초 정밀도의 시간의 문자열 표현을 가져옵니다. Date
객체의 .toString()
과 동일합니다.
.toString(): string;
매개변수
없음.
반환값
밀리초 정밀도의 시간의 문자열 표현을 반환합니다.
예시
import { Datetime } from "@tai-kun/surrealdb/encodable-datatypes";
const date = new Datetime("2024-06-01T12:34:56.780123456Z");console.log(date.toString());//-> Sat Jun 01 2024 21:34:56 GMT+0900 (日本標準時)
.toISOString()
인스턴스 메서드 >=encodable
나노초 정밀도의 시간의 문자열을 ISO 형식으로 가져옵니다. Date
객체의 .toISOString()
과 유사하지만, 나노초 정밀도이므로 소수점 아홉째 자리까지 문자열화됩니다.
.toISOString(): string;
매개변수
없음.
반환값
나노초 정밀도의 시간의 문자열을 ISO 형식으로 반환합니다.
예시
import { Datetime } from "@tai-kun/surrealdb/encodable-datatypes";
const date = new Datetime([1717245296, 780123456]);console.log(date.toISOString());//-> 2024-06-01T12:34:56.780123456Z
.toDate()
인스턴스 메서드 >=encodable
런타임 내장 Date
객체로 변환합니다. 밀리초 정밀도가 된다는 점에 유의하십시오.
.toDate(): Date;
매개변수
없음.
반환값
런타임 내장 Date
객체를 반환합니다.
.toSurql()
인스턴스 메서드 >=encodable
Datetime
객체를 SurrealQL에 삽입할 수 있는 문자열로 변환합니다. .toISOString()
과 유사하지만, d
접두사를 추가하여 쿼리 파서에 문자열이 UUID임을 알립니다.
.toSurql(): string;
매개변수
없음.
반환값
d
접두사가 붙은 ISO 형식의 날짜 및 시간을 반환합니다.
예시
import { Datetime } from "@tai-kun/surrealdb/encodable-datatypes";
const date = new Datetime([1717245296, 780123456]);console.log(date.toSurql());//-> d'2024-06-01T12:34:56.780123456Z'
.getCompact()
인스턴스 메서드 =standard
초와 나노초의 쌍을 가져옵니다.
.getCompact(): [seconds: number, nanoseconds: number];
매개변수
없음.
반환값
초와 나노초의 쌍을 반환합니다.
.setCompact()
인스턴스 메서드 =standard
초와 나노초의 쌍으로 날짜 및 시간을 설정합니다.
.setCompact(compact: [seconds: number, nanoseconds: number]): number;
매개변수
compact
초와 나노초의 쌍입니다.
반환값
밀리초 정밀도의 시간을 반환합니다.
예시
import { Datetime } from "@tai-kun/surrealdb/standard-datatypes";
const date = new Datetime(0);const time = dt.setCompact([1717245296, 780123456]);console.log(time);//-> 1717245296780
.getMicroseconds()
인스턴스 메서드 =standard
현지 시간을 사용하여 날짜의 마이크로초를 가져옵니다.
.getUTCMicroseconds()
는 이 메서드와 동일하게 동작합니다.
.getMicroseconds(): number;
매개변수
없음.
반환값
마이크로초를 반환합니다.
예시
import { Datetime } from "@tai-kun/surrealdb/standard-datatypes";
const date = new Datetime([1717245296, 780123456]);console.log(date.toISOString());//-> 2024-06-01T12:34:56.780123456Z// ^^^// |// +---+// vconsole.log(date.getMicroseconds());//-> 123
.setMicroseconds()
인스턴스 메서드 =standard
마이크로초를 설정합니다.
.setUTCMicroseconds()
는 이 메서드와 동일하게 동작합니다.
.setMicroseconds(us: number): number;
매개변수
us
설정할 마이크로초입니다. 값은 정수로 변환됩니다. 값이 0부터 999 사이가 아닌 경우 시간 전체가 영향을 받는다는 점에 유의하십시오.
반환값
밀리초 정밀도의 시간을 반환합니다.
예시
import { Datetime } from "@tai-kun/surrealdb/standard-datatypes";
const date = new Datetime([1717245296, 780123456]);console.log(date.toISOString());//-> 2024-06-01T12:34:56.780123456Z
const time = date.setMicroseconds(1_000);console.log(date.toISOString());//-> 2024-06-01T12:34:56.781000456Zconsole.log(time);//-> 1717245296781
.getNanoseconds()
인스턴스 메서드 =standard
현지 시간을 사용하여 날짜의 나노초를 가져옵니다.
.getUTCNanoseconds()
는 이 메서드와 동일하게 동작합니다.
.getNanoseconds(): number;
매개변수
없음.
반환값
나노초를 반환합니다.
예시
import { Datetime } from "@tai-kun/surrealdb/standard-datatypes";
const date = new Datetime([1717245296, 780123456]);console.log(date.toISOString());//-> 2024-06-01T12:34:56.780123456Z// ^^^// |// +-------+// vconsole.log(date.getNanoseconds());//-> 456
.setNanoseconds()
인스턴스 메서드 =standard
마이크로초를 설정합니다.
.setUTCNanoseconds()
는 이 메서드와 동일하게 동작합니다.
.setNanoseconds(us: number): number;
매개변수
us
설정할 나노초입니다. 값은 정수로 변환됩니다. 값이 0부터 999 사이가 아닌 경우 시간 전체가 영향을 받는다는 점에 유의하십시오.
반환값
밀리초 정밀도의 시간을 반환합니다.
예시
import { Datetime } from "@tai-kun/surrealdb/standard-datatypes";
const date = new Datetime([1717245296, 780123456]);console.log(date.toISOString());//-> 2024-06-01T12:34:56.780123456Z
const time = date.setNanoseconds(-1);console.log(date.toISOString());//-> 2024-06-01T12:34:56.780122999Zconsole.log(time);//-> 1717245296780
.clone()
인스턴스 메서드 =standard
Datetime
객체를 복제합니다.
.clone(): this;
매개변수
없음.
반환값
새로운 Datetime
객체를 반환합니다. Datetime
클래스를 상속하는 경우 해당 클래스의 인스턴스가 반환됩니다.
고급
Datetime
객체의 일반적인 판단
프리셋에 의존하지 않고 값이 Datetime
객체인지 판단하려면 isDatetime
함수를 사용하는 것이 좋습니다. 이 함수는 instanceof
를 사용하지 않으므로, 검증할 값의 프리셋이 불명확한 경우에 유용합니다.
import { isDatetime } from "@tai-kun/surrealdb";
UNIX 에포크 이전의 날짜 및 시간
SurrealDB의 datetime
타입은 나노초 정밀도까지 보유할 수 있습니다. 따라서 JavaScript에서 처리할 때는 주의가 필요합니다. SurrealDB가 직렬화한 datetime
, 예를 들어 "1969-12-31T23:59:59.999999999Z"
를 JavaScript의 Date.parse
에 전달하면 WebKit에서는 0밀리초가 되지만, 그 이외(Node.js, Deno, Bun, Chromium, Firefox)에서는 -1밀리초가 됩니다.
WebKit:
const date = new Date("1969-12-31T23:59:59.999999999Z");console.log(date.getTime());//-> 0
Node.js, Deno, Bun, Chromium, Firefox:
const date = new Date("1969-12-31T23:59:59.999999999Z");console.log(date.getTime());//-> -1