?um/p1-90`Number 생성자는:
extends 절의 값으로 사용될 수 있다. 지정된 Number 동작을 상속하려는 서브클래스 생성자는 서브클래스 인스턴스를 [[NumberData]] 내부 슬롯으로 생성하고 초기화하기 위해 Number 생성자에 대한 super 호출을 포함해야 한다.이 함수는 호출될 때 다음 단계를 수행한다:
Number 생성자는:
Number.EPSILON의 값은 1과 1보다 큰 Number 값 중 표현 가능한 가장 작은 값과 1 사이의 차이의 크기에 대한 Number 값이며, 대략 2.2204460492503130808472633361816 × 10-16이다.
이 속성의 속성값은 { [[Writable]]:
이 함수는 호출될 때 다음 단계를 수행한다:
이 함수는 호출될 때 다음 단계를 수행한다:
이 함수는 호출될 때 다음 단계를 수행한다:
이 함수는 전역 isNaN 함수 (
이 함수는 호출될 때 다음 단계를 수행한다:
Number.MAX_SAFE_INTEGER의 값은
이 속성의 속성값은 { [[Writable]]:
Number.MAX_VALUE의 값은
이 속성의 속성값은 { [[Writable]]:
Number.MIN_SAFE_INTEGER의 값은
이 속성의 속성값은 { [[Writable]]:
Number.MIN_VALUE의 값은
Number.MIN_VALUE의 값은 구현체가 실제로 표현할 수 있는 가장 작은 0이 아닌 양수 값이어야 한다.
이 속성의 속성값은 { [[Writable]]:
Number.NaN의 값은
이 속성의 속성값은 { [[Writable]]:
Number.NEGATIVE_INFINITY의 값은
이 속성의 속성값은 { [[Writable]]:
Number.POSITIVE_INFINITY의 값은
이 속성의 속성값은 { [[Writable]]:
Number.prototype의 초기값은
이 속성의 속성값은 { [[Writable]]:
Number 프로토타입 객체:
달리 명시되지 않는 한, 아래에 정의된 Number 프로토타입 객체의 메서드들은 일반적(generic)이 아니며, 이들에 전달된
메서드 명세에서 “this Number value”라는 구문은 메서드 호출의
Number.prototype.constructor의 초기값은
이 메서드는 유효 숫자 부분의 소수점 앞에 한 자리 그리고 유효숫자 소수점 뒤에 fractionDigits 자리를 갖는 10진 지수 표기법으로 표현된 이 Number 값을 포함하는 문자열을 반환한다. 만약 fractionDigits가
호출될 때 다음 단계를 수행한다:
위 규칙보다 더 정확한 변환을 제공하는 구현체를 위해, 다음의 대체 버전의 단계
이 메서드는 소수점 뒤에 fractionDigits 자리를 가지는 10진 고정 소수점 표기법으로 표현된 이 Number 값을 포함하는 문자열을 반환한다. 만약 fractionDigits가
호출될 때 다음 단계를 수행한다:
toFixed의 출력은 어떤 값들에 대해 toString보다 더 정밀할 수 있다. toString은 숫자를 인접한 Number 값들과 구별하기 위해 충분한 유효숫자만 출력하기 때문이다. 예를 들어,
(1000000000000000128).toString()는
(1000000000000000128).toFixed(0)는
ECMA-402 국제화 API를 포함하는 ECMAScript 구현체는 이 메서드를 ECMA-402 명세에 지정된 대로 구현해야 한다. 만약 구현체가 ECMA-402 API를 포함하지 않으면, 다음의 이 메서드 명세가 사용된다:
이 메서드는 toString과 같은 값을 반환해도 허용되지만 권장되지는 않는다.
이 메서드의 선택적 매개변수 의미는 ECMA-402 명세에 정의되어 있다; ECMA-402를 포함하지 않는 구현체는 해당 매개변수 위치를 다른 용도로 사용해서는 안 된다.
이 메서드는 이 Number 값을 다음 중 하나로 표현한 문자열을 반환한다: 유효숫자 소수점 앞에 한 자리와 유효숫자 소수점 뒤에
호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 일반적이지 않다;
이 메서드의
The abstract operation ThisNumberValue takes argument value (an ECMAScript language value) and returns either a
Number 인스턴스는
BigInt 생성자는:
new 연산자와 함께 사용되거나 서브클래싱하기 위한 용도는 아니다. 클래스 정의의 extends 절의 값으로 사용될 수 있으나, BigInt 생성자에 대한 super 호출은 예외를 발생시킬 것이다.이 함수는 호출될 때 다음 단계를 수행한다:
The abstract operation NumberToBigInt takes argument number (a Number) and returns either a
BigInt 생성자는:
이 함수는 호출될 때 다음 단계를 수행한다:
이 함수는 호출될 때 다음 단계를 수행한다:
BigInt.prototype의 초기값은
이 속성의 속성값은 { [[Writable]]:
BigInt 프로토타입 객체:
메서드 명세에서 “this BigInt value”라는 구문은 메서드 호출의
BigInt.prototype.constructor의 초기값은
ECMA-402 국제화 API를 포함하는 ECMAScript 구현체는 이 메서드를 ECMA-402 명세에 지정된 대로 구현해야 한다. 만약 구현체가 ECMA-402 API를 포함하지 않으면, 다음의 이 메서드 명세가 사용된다:
이 메서드는 toString과 같은 값을 반환해도 허용되지만 권장되지는 않는다.
이 메서드의 선택적 매개변수 의미는 ECMA-402 명세에 정의되어 있다; ECMA-402를 포함하지 않는 구현체는 해당 매개변수 위치를 다른 용도로 사용해서는 안 된다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 일반적이지 않다;
The abstract operation ThisBigIntValue takes argument value (an ECMAScript language value) and returns either a
이 속성의 속성값은 { [[Writable]]:
BigInt 인스턴스는
Math 객체는:
new 연산자로 생성자로 사용될 수 없다.이 명세에서, “x에 대한 Number 값”이라는 구문은
자연로그의 밑 e에 대한 Number 값으로, 대략 2.7182818284590452354이다.
이 속성의 속성값은 { [[Writable]]:
10의 자연로그에 대한 Number 값으로, 대략 2.302585092994046이다.
이 속성의 속성값은 { [[Writable]]:
2의 자연로그에 대한 Number 값으로, 대략 0.6931471805599453이다.
이 속성의 속성값은 { [[Writable]]:
자연로그의 밑 e의 상용로그(밑10)에 대한 Number 값으로, 대략 0.4342944819032518이다.
이 속성의 속성값은 { [[Writable]]:
Math.LOG10E의 값은 Math.LN10의 값의 역수에 가깝다.
자연로그의 밑 e의 밑2 로그에 대한 Number 값으로, 대략 1.4426950408889634이다.
이 속성의 속성값은 { [[Writable]]:
Math.LOG2E의 값은 Math.LN2의 값의 역수에 가깝다.
원의 둘레와 지름의 비인 π에 대한 Number 값으로, 대략 3.1415926535897932이다.
이 속성의 속성값은 { [[Writable]]:
½의 제곱근에 대한 Number 값으로, 대략 0.7071067811865476이다.
이 속성의 속성값은 { [[Writable]]:
Math.SQRT1_2의 값은 Math.SQRT2의 값의 역수에 가깝다.
2의 제곱근에 대한 Number 값으로, 대략 1.4142135623730951이다.
이 속성의 속성값은 { [[Writable]]:
이 속성의 속성값은 { [[Writable]]:
acos, acosh, asin, asinh, atan, atanh, atan2, cbrt, cos, cosh, exp, expm1, hypot, log, log1p, log2, log10, pow, random, sin, sinh, tan, 그리고 tanh 함수들의 동작은 경계 사례에 해당하는 특정 인수 값들에 대해 특정 결과를 요구하는 것 외에는 여기서 정확히 명시되지 않는다. 다른 인수 값들에 대해서는 이러한 함수들은 익숙한 수학적 함수의 결과에 대한 근사값을 계산하도록 의도되어 있으나, 근사 알고리즘 선택에는 어느 정도의 여지가 허용된다. 일반적인 의도는 구현자가 해당 하드웨어 플랫폼에서 C 프로그래머가 사용할 수 있는 동일한 수학 라이브러리를 ECMAScript 용으로 사용할 수 있어야 한다는 것이다.
알고리즘의 선택은 구현체에 맡겨지지만, 구현체가 fdlibm(http://www.netlib.org/fdlibm)을 사용하는 것이 권장된다(명세로는 규정되지 않음).
이 함수는 x의 절대값을 반환한다; 결과는 x와 동일한 크기를 가지되 양의 부호를 갖는다.
호출될 때 다음 단계를 수행한다:
이 함수는 x의 역코사인을 반환한다. 결과는 라디안으로 표현되며
호출될 때 다음 단계를 수행한다:
이 함수는 x의 역쌍곡코사인을 반환한다.
호출될 때 다음 단계를 수행한다:
이 함수는 x의 역사인을 반환한다. 결과는 라디안으로 표현되며
호출될 때 다음 단계를 수행한다:
이 함수는 x의 역쌍곡사인을 반환한다.
호출될 때 다음 단계를 수행한다:
이 함수는 x의 역탄젠트를 반환한다. 결과는 라디안으로 표현되며
호출될 때 다음 단계를 수행한다:
이 함수는 x의 역쌍곡탄젠트를 반환한다.
호출될 때 다음 단계를 수행한다:
이 함수는 인수 y와 x의 몫
호출될 때 다음 단계를 수행한다:
이 함수는 x의 세제곱근을 반환한다.
호출될 때 다음 단계를 수행한다:
이 함수는 x보다 작지 않은 가장 작은(−∞에 가장 가까운)
호출될 때 다음 단계를 수행한다:
Math.ceil(x)의 값은 -Math.floor(-x)의 값과 같다.
이 함수는 호출될 때 다음 단계를 수행한다:
만약 n이
이 함수는 x의 코사인을 반환한다. 인수는 라디안으로 표현된다.
호출될 때 다음 단계를 수행한다:
이 함수는 x의 쌍곡코사인을 반환한다.
호출될 때 다음 단계를 수행한다:
Math.cosh(x)의 값은 (Math.exp(x) + Math.exp(-x)) / 2의 값과 같다.
이 함수는 x의 지수 함수(ex, 여기서 e는 자연로그의 밑)의 값을 반환한다.
호출될 때 다음 단계를 수행한다:
이 함수는 ex에서 1을 뺀 결과를 반환한다. 결과는 x 값이 0에 가깝더라도 정확하도록 계산된다.
호출될 때 다음 단계를 수행한다:
이 함수는 x보다 크지 않은 가장 큰( +∞에 가장 가까운)
호출될 때 다음 단계를 수행한다:
Math.floor(x)의 값은 -Math.ceil(-x)의 값과 같다.
이 함수는 호출될 때 다음 단계를 수행한다:
이 함수는 호출될 때 다음 단계를 수행한다:
이 연산은 binary32로 캐스팅한 다음 binary16으로 캐스팅하는 것과 같지 않다(이중 반올림의 가능성 때문에): 예를 들어 k =
모든 플랫폼이 binary64에서 binary16으로의 네이티브 캐스팅을 제공하지는 않는다. 이를 제공할 수 있는 라이브러리들이 있으며, MIT 라이선스의 half 라이브러리가 그 예다. 또는 먼저 binary64를 roundTiesToEven 모드로 binary32로 캐스트한 다음, 결과가 잘못된 이중 반올림을 초래할 수 있는지 확인하고, 그런 경우에는 명시적으로 이들을 처리하여 올바른 결과가 나오도록 할 수 있다.
0개 이상의 인수가 주어지면, 이 함수는 인수들의 제곱합의 제곱근을 반환한다.
호출될 때 다음 단계를 수행한다:
이 함수의
구현체는 이 함수가 두 개 이상의 인수와 함께 호출될 때 발생하기 쉬운 오버플로우와 언더플로우로 인한 정밀도 손실을 피하기 위해 주의해야 한다.
이 함수는 호출될 때 다음 단계를 수행한다:
이 함수는 x의 자연로그를 반환한다.
호출될 때 다음 단계를 수행한다:
이 함수는 1 + x의 자연로그를 반환한다. 결과는 x 값이 0에 가까울 때도 정확하도록 계산된다.
호출될 때 다음 단계를 수행한다:
이 함수는 x의 상용로그(밑10)를 반환한다.
호출될 때 다음 단계를 수행한다:
이 함수는 x의 밑2 로그를 반환한다.
호출될 때 다음 단계를 수행한다:
0개 이상의 인수가 주어지면, 이 함수는 각 인수에
호출될 때 다음 단계를 수행한다:
가장 큰 값을 결정하기 위한 비교는
이 함수의
0개 이상의 인수가 주어지면, 이 함수는 각 인수에
호출될 때 다음 단계를 수행한다:
가장 작은 값을 결정하기 위한 비교는
이 함수의
이 함수는 호출될 때 다음 단계를 수행한다:
이 함수는 양의 부호를 갖고
각 서로 다른 렐름(Math.random 함수는 연속 호출에서 서로 다른 값들의 수열을 생성해야 한다.
이 함수는 x에 가장 가깝고
호출될 때 다음 단계를 수행한다:
Math.round(3.5)는 4를 반환하지만 Math.round(-3.5)는 -3을 반환한다.
Math.round(x)의 값이 항상 Math.floor(x + 0.5)의 값과 같은 것은 아니다. x가 x가 Math.round(x)는 Math.floor(x + 0.5)는 Math.round(x)는 x + 0.5를 계산할 때의 내부 rounding 때문에 Math.floor(x + 0.5)의 값과 다를 수 있다.
이 함수는 x의 부호를 반환하여 x가 양수인지 음수인지 또는 0인지 나타낸다.
호출될 때 다음 단계를 수행한다:
이 함수는 x의 사인을 반환한다. 인수는 라디안으로 표현된다.
호출될 때 다음 단계를 수행한다:
이 함수는 x의 쌍곡사인을 반환한다.
호출될 때 다음 단계를 수행한다:
Math.sinh(x)의 값은 (Math.exp(x) - Math.exp(-x)) / 2의 값과 같다.
이 함수는 x의 제곱근을 반환한다.
호출될 때 다음 단계를 수행한다:
숫자들의
호출될 때 다음 단계를 수행한다:
sum의 값은 임의 정밀도 산술 없이 다양한 알고리즘으로 계산할 수 있다. 한 가지는 Jonathan Richard Shewchuk의 "Grow-Expansion" 알고리즘이다. 보다 최근 알고리즘은 "Fast exact summation using small and large superaccumulators"이며, 코드가 https://gitlab.com/radfordneal/xsum에 있다.
이 함수는 x의 탄젠트를 반환한다. 인수는 라디안으로 표현된다.
호출될 때 다음 단계를 수행한다:
이 함수는 x의 쌍곡탄젠트를 반환한다.
호출될 때 다음 단계를 수행한다:
Math.tanh(x)의 값은 (Math.exp(x) - Math.exp(-x)) / (Math.exp(x) + Math.exp(-x))의 값과 같다.
이 함수는 숫자 x의
호출될 때 다음 단계를 수행한다:
다음의
ECMAScript에서 시간 측정은 POSIX의 시간 측정과 유사하며, 특히 윤년 규칙을 사용하는 보정된 필요(프로레프틱) 그레고리력, 에포크(epoch)로 UTC 1970년 1월 1일 자정의 정의, 그리고 하루를 정확히 86,400초(각각 1000밀리초)로 계산하는 것을 공
ECMAScript에서 시간 값(time value)은 Number이다. 이는 밀리초 정밀도의 순간을 나타내는
시간 값들은 UTC 윤초(leap seconds)를 고려하지 않는다—양의 윤초 안에 있는 순간을 나타내는 시간 값은 없고, 음의 윤초로 인해 UTC 타임라인에서 제거된 순간을 나타내는 시간 값은 존재할 수 있다. 하지만 시간 값의 정의는 윤초 경계에서만 불연속성을 갖고 윤초 밖에서는 차이가 0이므로 UTC와 부분적으로 정렬되는 결과를 낳는다.
Number는 -9,007,199,254,740,992에서 9,007,199,254,740,992까지의
1970년 1월 1일 자정의 정확한 순간은 시간 값
프로레프틱 그레고리력에서 윤년은 정확히 4로 나누어떨어지고 또한 400으로 나누어떨어지거나 100으로 나누어떨어지지 않는 해들이다.
400년 주기에는 97개의 윤년이 있다. 이는 연평균 365.2425일, 즉 31,556,952,000밀리초를 낳는다. 따라서 Number가 밀리초 정밀도로 정확히 표현할 수 있는 최대 범위는 대략 1970년을 기준으로 -285,426년에서 285,426년이다. 이 절에서 지정한 시간 값의 더 작은 범위는 약 1970년을 기준으로 -273,790년에서 273,790년이다.
다음 상수들은 이후 섹션들의 알고리즘에서 참조된다.
The abstract operation Day takes argument t (a finite time value) and returns an integral Number. 이는 t가 속하는 날의 일 번호를 반환한다. It performs the following steps when called:
The abstract operation TimeWithinDay takes argument t (a finite time value) and returns an integral Number in the interval from
The abstract operation DaysInYear takes argument y (an integral Number) and returns
The abstract operation DayFromYear takes argument y (an integral Number) and returns an integral Number. 이는 연도 y의 첫날의 일 번호를 반환한다. It performs the following steps when called:
The abstract operation TimeFromYear takes argument y (an integral Number) and returns a time value. 이는 연도 y의 시작 시각의 시간 값을 반환한다. It performs the following steps when called:
The abstract operation YearFromTime takes argument t (a finite time value) and returns an integral Number. 이는 t가 속하는 연도를 반환한다. It performs the following steps when called:
The abstract operation DayWithinYear takes argument t (a finite time value) and returns an integral Number in the inclusive interval from
The abstract operation InLeapYear takes argument t (a finite time value) and returns
The abstract operation MonthFromTime takes argument t (a finite time value) and returns an integral Number in the inclusive interval from
The abstract operation DateFromTime takes argument t (a finite time value) and returns an integral Number in the inclusive interval from
The abstract operation WeekDay takes argument t (a finite time value) and returns an integral Number in the inclusive interval from
The abstract operation HourFromTime takes argument t (a finite time value) and returns an integral Number in the inclusive interval from
The abstract operation MinFromTime takes argument t (a finite time value) and returns an integral Number in the inclusive interval from
The abstract operation SecFromTime takes argument t (a finite time value) and returns an integral Number in the inclusive interval from
The abstract operation msFromTime takes argument t (a finite time value) and returns an integral Number in the inclusive interval from
The abstract operation GetUTCEpochNanoseconds takes arguments year (an integer), month (an integer in the inclusive interval from 1 to 12), day (an integer in the inclusive interval from 1 to 31), hour (an integer in the inclusive interval from 0 to 23), minute (an integer in the inclusive interval from 0 to 59), second (an integer in the inclusive interval from 0 to 59), millisecond (an integer in the inclusive interval from 0 to 999), microsecond (an integer in the inclusive interval from 0 to 999), and nanosecond (an integer in the inclusive interval from 0 to 999) and returns a BigInt. 반환 값은 주어진 ISO 8601 달력 날짜와 UTC의 벽 시계(wall-clock) 시각에 대응하는 에포크 이후의 나노초 수를 나타내는 BigInt이다. It performs the following steps when called:
ECMAScript에서 표준시(time zones)는 0x0000에서 0x007F 범위의 코드 유닛들로만 구성된 문자열인 타임존 식별자로 표현된다.
구현체가 지원하는 타임존은 사용 가능한 명명된 타임존(available named time zones) 또는 오프셋 타임존(offset time zones)일 수 있다. 오프셋 타임존은
주요(Primary) 타임존 식별자는 사용 가능한 명명된 타임존에 대한 선호 식별자이다. 비주요(Non-primary) 타임존 식별자는 주요 식별자가 아닌 사용 가능한 명명된 타임존의 식별자이다. 사용 가능한 명명된 타임존 식별자은 주요 식별자 또는 비주요 식별자이다. 각각의 사용 가능한 명명된 타임존 식별자는 정확히 하나의 사용 가능한 명명된 타임존과 연관된다. 각각의 사용 가능한 명명된 타임존은 정확히 하나의 주요 타임존 식별자와 0개 이상의 비주요 타임존 식별자와 연관된다.
ECMAScript 구현체는 식별자
ECMA-402 국제화 API 요구사항을 따르는 구현체는 타임존 인식(time zone aware)이라고 불린다.
타임존 인식 구현체는 IANA 타임존 데이터베이스의 Zone 및
The implementation-defined abstract operation GetNamedTimeZoneEpochNanoseconds takes arguments timeZoneIdentifier (a String), year (an integer), month (an integer in the inclusive interval from 1 to 12), day (an integer in the inclusive interval from 1 to 31), hour (an integer in the inclusive interval from 0 to 23), minute (an integer in the inclusive interval from 0 to 59), second (an integer in the inclusive interval from 0 to 59), millisecond (an integer in the inclusive interval from 0 to 999), microsecond (an integer in the inclusive interval from 0 to 999), and nanosecond (an integer in the inclusive interval from 0 to 999) and returns a
입력이 음의 타임존 전환(예: 서머타임 종료로 시간이 반복되거나 타임존 규칙 변경으로 오프셋이 감소하는 경우)으로 인해 두 번 발생하는 지역 시간일 때, 반환 리스트는 두 개 이상의 요소를 가지며 오름차순으로 정렬된다. 입력이 양의 타임존 전환(예: 서머타임 시작으로 시간이 건너뛰어지거나 타임존 규칙 변경으로 오프셋이 증가하는 경우)으로 인해 건너뛰어진 지역 시간이라면, 반환 리스트는 비어있다. 그렇지 않으면 반환 리스트는 한 요소를 가진다.
GetNamedTimeZoneEpochNanoseconds의 기본 구현(로컬 정치적 규칙을 포함하지 않는 ECMAScript 구현체가 사용할)은 호출될 때 다음 단계를 수행한다:
타임존 인식 구현체(및 권장되는 다른 구현체들)는 IANA Time Zone Database의 시간대 정보를 사용하는 것이 요구된다: https://www.iana.org/time-zones/.
예: 2017년 11월 5일 1:30 AM America/New_York는 두 번 반복되므로 GetNamedTimeZoneEpochNanoseconds(
2017년 3월 12일 2:30 AM America/New_York은 존재하지 않으므로 GetNamedTimeZoneEpochNanoseconds(
The implementation-defined abstract operation GetNamedTimeZoneOffsetNanoseconds takes arguments timeZoneIdentifier (a String) and epochNanoseconds (a BigInt) and returns an integer.
반환된
로컬 정치적 규칙을 포함하지 않는 구현체에서 사용할 GetNamedTimeZoneOffsetNanoseconds의 기본 구현은 호출될 때 다음 단계를 수행한다:
타임존 오프셋 값은 양수 또는 음수일 수 있다.
타임존 식별자 레코드는
타임존 식별자 레코드는
| 필드 이름 | 값 | 의미 |
|---|---|---|
| [[Identifier]] | a String | 구현체가 지원하는 |
| [[PrimaryIdentifier]] | a String | [[Identifier]]가 해석하는 주요 |
만약 [[Identifier]]가 주요
The implementation-defined abstract operation AvailableNamedTimeZoneIdentifiers takes no arguments and returns a
ECMA-402 국제화 API를 구현하는 타임존 인식 구현체는 AvailableNamedTimeZoneIdentifiers
The implementation-defined abstract operation SystemTimeZoneIdentifier takes no arguments and returns a String.
이는
Date 객체의 메서드들이 일반적으로 제공하는 수준의 기능을 보장하기 위해, SystemTimeZoneIdentifier는 가능하다면
예:
The abstract operation LocalTime takes argument t (a finite time value) and returns an integral Number. 이는 t를 UTC에서 로컬 시간으로 변환한다. 결과를 결정하기 위해 해당 시각에 적용되는 표준시 및 서머타임에 대한 로컬 정치적 규칙을 사용해야 한다. It performs the following steps when called:
만약 구현체 내에 로컬 시각에 대한 정치적 규칙이 없으면, 결과는 t이다. 왜냐하면
이 절에서 요구되는 바와 같이 구현체는 IANA Time Zone Database의 시간대 정보를 사용하는 것이 요구되며(권장), 이를 통해 로컬 정치적 규칙을 반영해야 한다.
The abstract operation UTC takes argument t (a Number) and returns a time value. 이는 t를 로컬 시간에서 UTC 시간 값으로 변환한다. 결과를 결정하기 위해 해당 시각에 적용되는 표준시 및 서머타임에 대한 로컬 정치적 규칙을 사용해야 한다. It performs the following steps when called:
입력 t는 명목상 시간 값이지만 어떤 Number 값도 될 수 있다. 알고리즘은 시간 값 범위로 t를 제한해서는 안 되며, 이는 지역 UTC 오프셋과 관계없이 시간 값 범위의 경계에 해당하는 입력을 지원하기 위함이다. 예를 들어, 최대 시간 값은 8.64 × 1015로 "+275760-09-13T00:00:00Z"에 해당한다. 지역 시간대 오프셋이 그 순간 UTC보다 1시간 앞선 환경에서는, 이는 더 큰 입력 8.64 × 1015 + 3.6 × 106로 표현되며 "+275760-09-13T01:00:00+01:00"에 해당한다.
만약 구현체 내에 로컬 시각에 대한 정치적 규칙이 없으면, 결과는 t이다. 왜냐하면
타임존 인식 구현체(및 권장되는 다른 구현체들)는 IANA Time Zone Database의 시간대 정보를 사용하는 것이 요구된다.
2017년 11월 5일 1:30 AM America/New_York는 두 번 반복되지만(시계 되돌림), 그것은 1:30 AM UTC-04로 해석되어야 한다(UTC-05가 아니라).
UTC(
2017년 3월 12일 2:30 AM America/New_York은 존재하지 않지만, 그것은 2:30 AM UTC-05(즉 3:30 AM UTC-04와 동등)로 해석되어야 한다.
UTC(
The abstract operation MakeTime takes arguments hour (a Number), min (a Number), sec (a Number), and ms (a Number) and returns a Number. 이는 밀리초 수를 계산한다. It performs the following steps when called:
MakeTime의 산술은 부동소수점 산술이며 결합법칙이 성립하지 않으므로 연산은 올바른 순서로 수행되어야 한다.
The abstract operation MakeDay takes arguments year (a Number), month (a Number), and date (a Number) and returns a finite Number or
The abstract operation MakeDate takes arguments day (a Number) and time (a Number) and returns a finite Number or
The abstract operation MakeFullYear takes argument year (a Number) and returns an integral Number or
The abstract operation TimeClip takes argument time (a Number) and returns a time value. 이는 밀리초 수를 계산한다. It performs the following steps when called:
ECMAScript는 ISO 8601 달력 날짜 확장 형식의 단순화에 기반한 날짜-시간 문자열 교환 포맷을 정의한다. 형식은 다음과 같다: YYYY-MM-DDTHH:mm:ss.sssZ
요소들은 다음과 같다:
YYYY
|
프로레프틱 그레고리력에서 연도를 네 자리 십진수로 0000에서 9999까지 표현하거나, |
-
|
문자열 내에 문자 |
MM
|
연도의 월을 01(1월)에서 12(12월)까지 두 자리 십진수로 나타낸다. |
DD
|
월의 일을 01에서 31까지 두 자리 십진수로 나타낸다. |
T
|
시간 요소의 시작을 나타내기 위해 문자열에 |
HH
|
자정 이후 지난 완전한 시간 수를 00에서 24까지 두 자리 십진수로 나타낸다. |
:
|
문자열 내에 문자 |
mm
|
시간의 시작 이후의 완전한 분 수를 00에서 59까지 두 자리 십진수로 나타낸다. |
ss
|
분의 시작 이후의 완전한 초 수를 00에서 59까지 두 자리 십진수로 나타낸다. |
.
|
문자열 내에 문자 |
sss
|
초의 시작 이후의 완전한 밀리초 수를 세 자리 십진수로 나타낸다. |
Z
|
UTC 오프셋 표현으로 HH:mm이 오는 형태로 지정된다(이는 로컬 시간이 UTC보다 앞서거나 뒤처짐을 나타내는 ISO 8601 타임존 오프셋 문자열 형식의 부분집합이다).
|
이 형식은 날짜 전용 형태도 포함한다:
YYYY
YYYY-MM
YYYY-MM-DD
또한 위의 날짜 전용 형태 중 하나에 선택적 UTC 오프셋 표현이 추가된 다음 시간 형태들 중 하나를 바로 이어붙인 “date-time” 형태들도 포함한다:
THH:mm
THH:mm:ss
THH:mm:ss.sss
범위를 벗어나거나 형식에 맞지 않는 요소가 포함된 문자열은 이 형식의 유효한 인스턴스가 아니다.
모든 날은 자정에서 시작하고 끝나므로 00:00과 24:00 두 표기법을 사용하여 하나 날짜와 연관된 두 자정을 구별할 수 있다. 이는 다음 두 표기가 정확히 동일한 시간을 가리킨다는 것을 의미한다: 1995-02-04T24:00와 1995-02-05T00:00. 후자의 형태를 "날의 끝"으로 해석하는 것은 ISO 8601과 일치한다(ISO 8601은 시간 간격을 기술할 때 이를 예약하고 단일 시점을 표현할 때는 허용하지 않음에도 불구하고).
CET, EST 등과 같은 민간 약어에 대한 국제 표준은 존재하지 않으며, 같은 약어가 서로 다른 타임존에 대해 사용되기도 한다. 이 이유로 ISO 8601과 이 형식은 모두 숫자 기반의 타임존 오프셋 표현을 지정한다.
시간 값 범위인 약 ±273,790년을 완전히 다루려면 9999년 이전 또는 이후의 연도를 표현해야 한다. ISO 8601은 연도 표기의 확장을 허용하지만 교환 당사자 간 합의에 의해서만 허용한다. 단순화된 ECMAScript 형식에서 그러한 확장 연도 표기는 6자리여야 하며 항상 + 또는 - 기호로 접두된다. 연도 0은 양수로 간주되어 반드시 + 기호로 접두되어야 한다. 연도 0을 -000000으로 표기하는 것은 유효하지 않다. 확장 연도를 사용한 Date Time String Format에 맞는 문자열이 시간 값 범위를 벗어나는 순간을 나타내면 Date.parse는 인식 불가능한 것으로 취급하고 구현체 특정 동작이나 휴리스틱에 의존하지 않고
확장 연도를 포함한 날짜-시간 값의 예:
| -271821-04-20T00:00:00Z | 기원전 271822년 |
| -000001-01-01T00:00:00Z | 기원전 2년 |
| +000000-01-01T00:00:00Z | 기원전 1년 |
| +000001-01-01T00:00:00Z | 서기 1년 |
| +001970-01-01T00:00:00Z | 서기 1970년 |
| +002009-12-15T00:00:00Z | 서기 2009년 |
| +275760-09-13T00:00:00Z | 서기 275760년 |
ECMAScript는 ISO 8601에서 파생된 UTC 오프셋을 위한 문자열 교환 형식을 정의한다. 형식은 다음 문법으로 설명된다.
The abstract operation IsTimeZoneOffsetString takes argument offsetString (a String) and returns a Boolean. 반환값은 offsetString이
The abstract operation ParseTimeZoneOffsetString takes argument offsetString (a String) and returns an integer. 반환값은 문자열 offsetString에 해당하는 UTC 오프셋을 나노초 단위의
Date 생성자는:
extends 절의 값으로 사용될 수 있다. 지정된 Date 동작을 상속하려는 서브클래스 생성자는 [[DateValue]] 내부 슬롯을 가진 서브클래스 인스턴스를 생성하고 초기화하기 위해 Date 생성자에 대한 super 호출을 포함해야 한다.이 함수는 호출될 때 다음 단계를 수행한다:
parse 메서드(Date 생성자는:
이 함수는 호출이 발생한 UTC 날짜와 시간을 지정하는 시간 값을 반환한다.
이 함수는 인자에
String이 MM 또는 DD 요소가 부재하면 HH, mm, 또는 ss 요소가 부재하면 sss 요소가 부재하면
x가 ECMAScript의 특정 구현에서 밀리초 양이 0인 Date이면, 참조된 모든 속성이 초기값을 가진 경우, 다음 표현식들은 모두 그 구현에서 같은 숫자 값을 생성해야 한다:
x.valueOf()
Date.parse(x.toString())
Date.parse(x.toUTCString())
Date.parse(x.toISOString())
그러나 표현식
Date.parse(x.toLocaleString())
은 앞의 세 표현식과 같은 Number 값을 생성할 필요가 없으며, 일반적으로 Date Time String Format(toString 또는 toUTCString 메서드로 생성될 수 없는 임의의 String 값이 주어졌을 때 이 함수가 생성하는 값은
Date.prototype의 초기값은
이 속성은 { [[Writable]]:
이 함수는 호출될 때 다음 단계를 수행한다:
이 함수의
이 함수는 Date 생성자와 두 가지 면에서 다르다: Date를 생성하는 대신 시간 값을 Number로 반환하고, 인자를 로컬 시간이 아니라 UTC로 해석한다.
Date 프로토타입 객체는:
명시적으로 달리 정의되지 않는 한, 아래에 정의된 Date 프로토타입 객체의 메서드는 제네릭이 아니며, 그 메서드에 전달되는
Date.prototype.constructor의 초기값은
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
month가 존재하지 않으면, 이 메서드는 month가 getMonth() 값을 가지고 존재하는 것처럼 동작한다. date가 존재하지 않으면, date가 getDate() 값을 가지고 존재하는 것처럼 동작한다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
min이 존재하지 않으면, 이 메서드는 min이 getMinutes() 값을 가지고 존재하는 것처럼 동작한다. sec이 존재하지 않으면, sec이 getSeconds() 값을 가지고 존재하는 것처럼 동작한다. ms가 존재하지 않으면, ms가 getMilliseconds() 값을 가지고 존재하는 것처럼 동작한다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
sec이 존재하지 않으면, 이 메서드는 sec이 getSeconds() 값을 가지고 존재하는 것처럼 동작한다. ms가 존재하지 않으면, 이것은 ms가 getMilliseconds() 값을 가지고 존재하는 것처럼 동작한다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
date가 존재하지 않으면, 이 메서드는 date가 getDate() 값을 가지고 존재하는 것처럼 동작한다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
ms가 존재하지 않으면, 이 메서드는 ms가 getMilliseconds() 값을 가지고 존재하는 것처럼 동작한다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
month가 존재하지 않으면, 이 메서드는 month가 getUTCMonth() 값을 가지고 존재하는 것처럼 동작한다. date가 존재하지 않으면, date가 getUTCDate() 값을 가지고 존재하는 것처럼 동작한다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
min이 존재하지 않으면, 이 메서드는 min이 getUTCMinutes() 값을 가지고 존재하는 것처럼 동작한다. sec이 존재하지 않으면, sec이 getUTCSeconds() 값을 가지고 존재하는 것처럼 동작한다. ms가 존재하지 않으면, ms가 getUTCMilliseconds() 값을 가지고 존재하는 것처럼 동작한다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
sec이 존재하지 않으면, 이 메서드는 sec이 getUTCSeconds() 값을 가지고 존재하는 것처럼 동작한다. ms가 존재하지 않으면, ms가 getUTCMilliseconds()가 반환한 값을 가지고 존재하는 것처럼 동작한다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
date가 존재하지 않으면, 이 메서드는 date가 getUTCDate() 값을 가지고 존재하는 것처럼 동작한다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
ms가 존재하지 않으면, 이 메서드는 ms가 getUTCMilliseconds() 값을 가지고 존재하는 것처럼 동작한다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 JSON.stringify(
이 메서드는 호출될 때 다음 단계를 수행한다:
인자는 무시된다.
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의 toISOString 메서드를 가져야 한다.
ECMA-402 국제화 API를 포함하는 ECMAScript 구현은 ECMA-402 명세에 지정된 대로 이 메서드를 구현해야 한다. ECMAScript 구현이 ECMA-402 API를 포함하지 않는 경우 이 메서드에 대한 다음 명세가 사용된다:
이 메서드는 String 값을 반환한다. String의 내용은
이 메서드의 선택적 매개변수의 의미는 ECMA-402 명세에 정의되어 있다; ECMA-402 지원을 포함하지 않는 구현은 그 매개변수 위치를 다른 어떤 용도로도 사용해서는 안 된다.
ECMA-402 국제화 API를 포함하는 ECMAScript 구현은 ECMA-402 명세에 지정된 대로 이 메서드를 구현해야 한다. ECMAScript 구현이 ECMA-402 API를 포함하지 않는 경우 이 메서드에 대한 다음 명세가 사용된다:
이 메서드는 String 값을 반환한다. String의 내용은
이 메서드의 선택적 매개변수의 의미는 ECMA-402 명세에 정의되어 있다; ECMA-402 지원을 포함하지 않는 구현은 그 매개변수 위치를 다른 어떤 용도로도 사용해서는 안 된다.
ECMA-402 국제화 API를 포함하는 ECMAScript 구현은 ECMA-402 명세에 지정된 대로 이 메서드를 구현해야 한다. ECMAScript 구현이 ECMA-402 API를 포함하지 않는 경우 이 메서드에 대한 다음 명세가 사용된다:
이 메서드는 String 값을 반환한다. String의 내용은
이 메서드의 선택적 매개변수의 의미는 ECMA-402 명세에 정의되어 있다; ECMA-402 지원을 포함하지 않는 구현은 그 매개변수 위치를 다른 어떤 용도로도 사용해서는 안 된다.
이 메서드는 호출될 때 다음 단계를 수행한다:
d.[[DateValue]]가 1000으로 나누어떨어지는 임의의 Date d에 대해, Date.parse(d.toString())의 결과 = d.valueOf()이다.
이 메서드는 제네릭이 아니다; 자신의
The abstract operation TimeString takes argument tv (a Number, but not
The abstract operation DateString takes argument tv (a Number, but not
| Number | Name |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Number | Name |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The abstract operation TimeZoneString takes argument tv (an integral Number) and returns a String. It performs the following steps when called:
The abstract operation ToDateString takes argument tv (an integral Number or
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 ECMAScript 언어 연산자가 Date를 원시 값으로 변환하기 위해 호출한다. hint에 허용되는 값은
이 메서드는 호출될 때 다음 단계를 수행한다:
이 속성은 { [[Writable]]:
이 메서드의
Date 인스턴스는