날짜와 시간은 프로그래밍 과정에서 빼놓을 수 없는 필수 과목입니다. 다행스럽게도 JavaScript
우리를 위해 내장 객체인 날짜(Date)를 준비했습니다. 이 객체를 통해 우리는 생성, 저장, 수정, 시간 측정, 인쇄 및 기타 기본 작업을 수행할 수 있으며 이는 모든 JavaScript
프로그래머에게 필요한 과정 중 하나입니다.
일반 객체와 동일합니다. new Date()
사용하여 Date
객체를 생성할 수 있으며 생성 중에 일부 초기화 매개변수를 전달할 수도 있습니다.
:
let now = new Date()console.log(now)
코드 실행 결과는 다음과 같습니다.
이는 단순히 코드가 실행되는 특정 시간을 출력하는 것입니다. 여기에 표시된 것은 2022年6月22日19点25份24秒
입니다.
밀리초 매개변수를 사용하여 날짜 객체를 생성합니다. 여기서 milliseconds
1970년 1월 1일 UTC+0 이후의 밀리초 수를 나타냅니다(1밀리초 = 1/1000초).
//시간을 생성합니다(예: 1970.1.1 시점 0밀리초 let jan01_1970 = new Date(0)) console.log(jan01_1970) //1970년 1.1 시점보다 3일 늦은 시간을 생성합니다(3일 * 24시간 * 3600초 * 1000밀리초) let jan04_1970 = 새 날짜(3 * 24 * 3600 * 1000) Console.log(jan04_1970)
코드 실행 결과:
milliseconds
는 1970년 1월 1일 00:00:00 이후 경과된 밀리초 수 또는 타임스탬프 라고 합니다.
타임스탬프는 날짜를 간단히 디지털로 표현한 것입니다. 우리는 일반적으로 날짜를 생성하기 위해 new Date(milliseconds)
사용합니다. Date
객체가 이미 있는 경우 date.getTime()
사용하여 날짜에 해당하는 타임스탬프를 가져올 수 있습니다.
참고:
중국은 Zone 8에 있으므로 위 예의 시간은 00:00:00이 아니라 08:00:00, 즉
타임스탬프는 정수일 뿐만 아니라 음수일 수도 있습니다. 예:
//1969-12-31 00:00:00let dec31_1969 = new Date(-24 * 3600 * 1000)console.log(dec31_1969)
code 실행 결과:
가 생성될 때마다 타임스탬프를 사용한다면 여전히 타임스탬프 계산이 다소 어렵기 때문에 편리하지 않을 수 있습니다.
시간 문자열을 사용하여 시간을 생성할 수도 있습니다. 예:
let date = new Date('2022-06-22 00:00:00') console.log(date)
코드 실행 결과:
year
——4자리 숫자여야 합니다.month
—— [0,11]
, 0
1
입니다.hours/minutes/sec/ms
은 0입니다.예:
let date = new Date(2022,6,22,20,35,33)console.log(date)
코드 실행 결과:
밀리초 단위의 숫자도 지정할 수 있습니다:
let date = new Date(2022,6,22,20,35,33,777)console.log(date)
Date
객체가 있는 경우 내장된 Date
객체의 메소드에서 연도, 월, 날짜 등과 같은 시간의 일부를 가져옵니다.
예를 들어 date
있습니다
let date = new Date(2022,5,22,20,35,33)
getFullYear()
연도를 가져오고, date.getFullYear()
2022
반환합니다getMonth()
월, date.getMonth()
5
반환합니다( 6
).getDate()
현재 달의 날짜를 가져오고, date.getDate()
22
반환합니다.getDay()
현재 시간이 있는 요일, date.getDay()
3
반환합니다.참고:
- 위 날짜는 모두 현지 날짜를 기준으로 합니다. 예를 들어,
- 연도를 얻으려면
getFullYear
getYear
합니다.
getUTCFullYear()
및 getUTCMonth()
, getUTCDay
등에 해당하는 UTC
시간인 0
시간대의 시간을 가져올 수도 있습니다. get
뒤에 UTC
삽입하면 됩니다.
예:
date = new Date(2022,5,22,20,35,33)console.log(date.getHours(),date.getUTCHours())
코드 실행 결과:
밤에도 중국 시간대와 0
시간대의 시차가 8
시간이라는 것을 알 수 있다.
getTime()
UTC
getTimezoneOffset()
0
UTC
Date
객체의 메소드를 통해 날짜를 설정할 수도 있습니다.
setFullYear(year, [month], [date])
의 특정 부분은 연도(월, 일)를 설정합니다setMonth(month, [date])
월(일)을 설정합니다.setDate(date)
날짜(일)를 설정합니다.setHours(hour, [min], [sec], [ms])
시간(분, 초, 밀리초)을 설정합니다.setMinutes(min, [sec], [ms])
분 설정(초, 밀리초)setSeconds(sec, [ms])
초 설정(밀리초)setMilliseconds(ms)
밀리초 설정setTime(milliseconds)
( 1970-01-01 00:00:00 UTC+0
이후의 밀리초 수 사용) 1970-01-01 00:00:00 UTC+0
전체 날짜 설정)위 함수 중 setTime()
만 UTC
변형이 아닙니다.
JavaScript
의 Date
에는 자동 보정 기능이 있어 시간 계산이 매우 편리합니다.
예:
let date = new Date(2022,5,38)//여기서 38console.log(date) 코드의 실행 결과를 참고하세요
.
실행 결과를 보면 "2022년 6월 38일"이 프로그램에 오류를 일으키지는 않았지만 날짜를 "2022년 7월 8일"로 변환한 것을 알 수 있습니다.
위의 경우는 JavaScript
에서 범위를 벗어난 날짜가 Date
객체에 의해 자동으로 할당되는 것을 확인했습니다. 이런 식으로 Date
객체를 사용하여 매우 편리하게 날짜를 계산할 수 있습니다.
예를 들어 날짜에 연, 월, 일을 더하고 뺄 수 있습니다.
let date = new Date(2022,5,23)//현재 시간은 2022-6-23date.setDate(date.getDate()입니다. + 8)//8일 후의 시간을 계산합니다. console.log(date)
코드 실행 결과:
마찬가지로 date.setSeconds()
메서드를 사용하여 날짜를 초 단위로 계산할 수도 있습니다.
와 날짜 Date
로 변환한 결과는 밀리초 단위의 값인 date.getTime()
의 반환 값과 동일합니다:
let date = new Date()console.log(+date)
code 실행 결과:
시간의 본질은 숫자이므로 ms
(밀리초) 단위로 시간 차이 계산을 수행할 수도 있습니다.
예:
let date1 = new Date(2022,5,23)let date2 = new Date(2022,5,24)console.log(`시간 차이는 ${date2-date1}ms`)
코드 실행 결과는 다음과 같습니다
.:
현재 시간을 얻으려면 Date.now()
메서드를 사용하는 것이 더 나은 방법입니다. 이 메서드는 추가 Date
객체를 생성하지 않고 현재 시간의 타임스탬프를 반환하므로 메모리 오버헤드 및 가비지 수집에 적합하고 코드가 더 간단합니다.
예:
let start = Date.now()for(let i = 1;i<100000;i++){ let num = i * i * i;}let end = Date.now()console.log(`소비 시간 ${end - Begin}ms`)
코드 실행 결과:
Date.parse()
메서드는 날짜 문자열을 읽고 이를 타임스탬프로 변환할 수 있지만 문자열은 특정 규칙( YYYY-MM-DDTHH:mm:ss.sssZ
을 준수해야 합니다.
YYYY-MM-DD
年-月-日
T
구분 기호HH:mm:ss.sss
时:分:秒.毫秒
Z
+-hh:mm
형식의 시간대일 수 있습니다. 단일 문자 Z
약어로 작성할 수 있는 UTC+0
문자열을 나타냅니다(예: YYYY-MM-DD
, YYYY-MM
, YYYY
).
작은 팁을 드리자면:
let ms = Date.parse('2022-06-23T19:38:30.777+08:00')//타임 스탬프 let date = new Date(ms)console.log(date)
코드 실행 결과:
JavaScript
Date
객체를 사용하여 시간을 처리합니다. new Date()
;Date
에는 많은 실용적인 방법이 있으며 특정 기간을 얻을 수 있으며Date
객체는 자동으로 보정됩니다. 날짜를 직접 더하고 뺄 때Date.now()
현재 시간을 효율적으로 얻을 수 있습니다.