숫자와 날짜
숫자
모든 자바스크립트 숫자는 IEEE 754 부동소수점 표준에 따라 여덟개의 바이트로 표현되는 배정밀도 값을 갖는다.
10진수 42
16진수 0x2A
8진수 0o52
2진수 0b101010
1/0 Infinity 무한대
0/0 NaN 숫자아님
const n = 2342342
n.toString(16) // 16진수로 변경된 문자열
n.toString(8) // 8진수로 변경된 문자열
toFixed, toExponential, toPrecision
//앞뒤공백이 없는 순수한 10진수 문자열 확인
const intRegex = /^[+-]?[0-9]+$/
if (intRegex.test(str)) value = parseInt(str)
Number 함수와 상수
Number 클래스
이름 | 설명 |
---|---|
isNaN(x) | x가 NaN이면 참이다 |
isFinite(x) | x가 ±Infinity, NaN이 아니면 참이다 |
수학관련 함수와 상수
Math 클래스
큰정수
큰정수 big integer 는 숫자의 갯수에 제한이 없는 정수.
큰정수는 n 으로 끝남
typeof(n) 'bigint' 반환
날짜생성
컴퓨터에서는 특정시간을 기준으로 삼아 이후 또는 이전 시간을 표시한다. 이를 에폭 epoch 라 부르며 1970년 1월 1일 목요일 자정 UTC 를 가리킨다. UTC는 그리니치 천문대를 지나는 자오선을 기준으로 삼은 시간으로 세계협정시 라고도 불린다.
자바스크립트는 에폭기준 밀리초기준으로 시간을 측정하며 유효시간 범위는 ±100,000,000 일이다.
표준 ISO 8601 포맷 YYYY-MM-DDTHH:mm:ss.sssZ 로 표시하며 T 로 날짜와 시간을 구분하고 Z 는 UTC로 부터 오프셋이 0임을 의미한다.
// 1970-01-01T00:00:00.000Z // epoch
// +275760-09-13T00:00:00.000Z // 가장 큰 날짜
이름 | 설명 |
---|---|
new Date(iso86015String) | 표준 8601 문자열을 이용 |
new Date() | 현재시간 |
new Date(millisecondsFromEpoch) | 에폭기준 밀리초로 Date생성 |
new Date(year, zeroBasedMonth, day, hours, minutes, seconds, milliseconds) | |
UTC(year, zeroBasedMonth, day, hours, minutes, seconds, milliseconds) | 에폭을 기준으로 밀리초 반환 |
toISOString() | 표준 8601 문자열 반환 |
toLocaleString(locale, options) | 사람이 읽을수 있는 포맷으로 출력, locale, options 참고 |
new 없이 Date 함수를 호출하면 인수를 무시하며 Date 객체가 아닌 현재시간을 문자열로 반환한다.
Date 객체를 수식연산에 사용하면 자동으로 문자열이나 에폭기준 밀리초 숫자로 변환된다.
let a = new Date()
a + 1 // 'Thu Mar 24 2022 18:24:55 GMT+0900 (한국 표준시)1'
a * 1 // 1648113895829
Date 함수와 메서드
Date.UTC(year, zeroBasedMonth, day, hours, minutes, seconds, milliseconds)
Date.parse(dateString)
Date.now()
모두 에폭기준 밀리초를 반환한다.
const deadLine = new Date(Date.UTC(2022, 0, 31))
자바스크립트는 시간단위 세터를 제공한다. 세터는 자동으로 유효한 다음날짜로 값을 조정한다.
const appointment = new Date('2022-05-31T00:00:00.000Z')
appointment.setUTCMonth(5 /* 6월 */) // appointment 7월 1일
날짜 포메팅
const appointment = new Date('2022-05-31T09:12:44.999Z')
// undefined
appointment
// Tue May 31 2022 18:12:44 GMT+0900 (한국 표준시)
appointment.toString()
// 'Tue May 31 2022 18:12:44 GMT+0900 (한국 표준시)'
appointment.toDateString()
// 'Tue May 31 2022'
appointment.toTimeString()
// '18:12:44 GMT+0900 (한국 표준시)'
appointment.toUTCString()
// 'Tue, 31 May 2022 09:12:44 GMT'
appointment.toLocaleString()
// '2022. 5. 31. 오후 6:12:44'
appointment.toLocaleDateString()
// '2022. 5. 31.'
appointment.toLocaleTimeString()
// '오후 6:12:44'
appointment.toLocaleTimeString('en-Us')
// '6:12:44 PM'
appointment.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric'})
// 'May 31, 2022'
appointment.toISOString()
// '2022-05-31T09:12:44.999Z'
appointment.toISOString().slice(0, 10);
// '2022-05-31'
연습문제
function plusMinusZero(x) {
// +0 -> +1, -0 -> -1, 이외 -> 0
if (Object.is(Infinity, 1/x))
return +1
if (Object.is(-Infinity, 1/x))
return -1
return 0
}
function thousandBigint(x) {
let xx = x.toString()
return BigInt(xx.repeat(1000))
}
function printCalendar(y, m) {
let ym = new Date(y, m)
let day = ym.getDay()
let lastdate = new Date(y, m+1, 0)
let ld = lastdate.getDate()
let sp = ' '.repeat(day)
for (let i = 1; i <= ld; i++) {
sp = sp + (i<10? ' '+i : i) + ' '
if ((i + day) % 7 === 0) {
sp = sp + '\n'
}
}
return sp
}
const deadline = new Date(Date.UTC(2020, 0, 31))
deadline.setUTCMonth(1)
deadline.setUTCDate(1)
deadline // Sun Mar 01 2020 09:00:00 GMT+0900 (한국 표준시)
Author And Source
이 문제에 관하여(숫자와 날짜), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ged/숫자와-날짜저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)