B18 : Date ๊ฐ์ฒด

2025. 8. 20. 16:16ใ†Front-end/JavaScript

๋ฐ˜์‘ํ˜•

๋ชฉ์ฐจ

1. Date ๊ฐ์ฒด

2. ๊ฐ์ฒด ์ƒ์„ฑ : new Date()

    2-1. new Date()

    2-2. new Date(milliseconds)

    2-3. new Date(datestring)

    2-4. new Date(year, month, date, hours, minutes, seconds, ms)

3. Date ๋ฉ”์„œ๋“œ๋กœ ๋‚ ์งœ ๊ตฌ์„ฑ ์š”์†Œ ์–ป๊ธฐ

    3-1. get ํ•จ์ˆ˜

    3-2. ๊ตญ๊ฐ€ ํ‘œ๊ธฐ์— ๋งž์ถฐ ์‹œ๊ฐ„ ์ •๋ณด๋ฅผ ํ‘œํ˜„

4. Date ๋ฉ”์„œ๋“œ๋กœ ๋‚ ์งœ ๊ตฌ์„ฑ ์š”์†Œ ์„ค์ •ํ•˜๊ธฐ

5. ์ž๋™๊ณ ์นจ

6. ์‹œ์ฐจ ์ธก์ •ํ•˜๊ธฐ

    6-1. Date ๊ฐ์ฒด๋ฅผ ์ˆซ์ž๋กœ ๋ณ€๊ฒฝ

    6-2. Date.now()

7. ๊ฐ์ฒด์˜ ํ˜•๋ณ€ํ™˜


1. Date ๊ฐ์ฒด

Date๋Š” ๋‚ ์งœ ๊ด€๋ จ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋‚ด์žฅ ๊ฐ์ฒด์ด๋‹ค.

Date์˜ ์ƒ์„ฑ ๋ฐ ์ˆ˜์ •, ์‹œ๊ฐ„์˜ ์ €์žฅ๊ณผ ์ธก์ •, ํ˜„์žฌ ๋‚ ์งœ์˜ ์ถœ๋ ฅ ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 


2. ๊ฐ์ฒด ์ƒ์„ฑ : new Date()

new Date()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ƒˆ๋กœ์šด Date ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1. new Date()

์ธ์ž ์—†์ด ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ˜„์žฌ ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•œ๋‹ค.

// ํ˜„์žฌ ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ ์ถœ๋ ฅ
let now = new Date();
alert( now );

 

 

2. new Date(milliseconds)

UTC ๊ธฐ์ค€(UTC+0) 1970๋…„ 1์›” 1์ผ 0์‹œ 0๋ถ„ 0์ดˆ์—์„œ milliseconds ํ›„์˜ ์‹œ์ ์ด ์ €์žฅ๋œ ๊ฐ์ฒด๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.
1970๋…„ ์ฒซ ๋‚ 
์„ ๊ธฐ์ค€์œผ๋กœ ํ˜๋Ÿฌ๊ฐ„ ๋ฐ€๋ฆฌ์ดˆ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜๋ฅผ ํƒ€์ž„์Šคํƒฌํ”„(timestamp)๋ผ๊ณ  ํ•œ๋‹ค.

 

// 1970๋…„ 1์›” 1์ผ 0์‹œ 0๋ถ„ 0์ดˆ
let Jan01_1970 = new Date(0);
alert( Jan01_1970 );

// 1970๋…„ 1์›” 1์ผ์˜ 24์‹œ๊ฐ„ ํ›„
let Jan02_1970 = new Date(24 * 3600 * 1000);
alert( Jan02_1970 );

// 1970๋…„ 1์›” 1์ผ์˜ 24์‹œ๊ฐ„ ์ „
let Dec31_1969 = new Date(-24 * 3600 * 1000);
alert( Dec31_1969 );

 

 

 

3. new Date(datestring)

์ธ์ˆ˜๊ฐ€ ๋ฌธ์ž์—ด ํ•˜๋‚˜๋ผ๋ฉด, ํ•ด๋‹น ๋ฌธ์ž์—ด์€ ์ž๋™์œผ๋กœ ํŒŒ์‹ฑ๋˜์–ด ๋‚ ์งœ๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

// 2017๋…„
let date = new Date("2017");
alert(date);

// 2017๋…„ 7์›”
let date = new Date("2017-07");
alert(date);

// 2017๋…„ 1์›” 26์ผ
let date = new Date("2017-01-26");
alert(date);

 

๊ตฌ๋ฌธ ๋ถ„์„์— ์ ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ Date.parse(str)์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

์•„๋ž˜ ์กฐ๊ฑด์— ๋งž์ง€ ์•Š๋Š” ๋ฌธ์ž์—ด์„ ๋„ฃ์œผ๋ฉด NaN์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

  • YYYY-MM-DD : ๋‚ ์งœ(์—ฐ-์›”-์ผ) /  (YYYY-MM, YYYY๋„ ๊ฐ€๋Šฅ)
  • "T" : ๊ตฌ๋ถ„ ๊ธฐํ˜ธ (new Date('2025-03-24T19:22:24');
  • HH:mm:ss.sss : ์‹œ:๋ถ„:์ดˆ.๋ฐ€๋ฆฌ์ดˆ
  • 'Z'(์˜ต์…˜) : +-hh:mm ํ˜•์‹์˜ ์‹œ๊ฐ„๋Œ€๋ฅผ ๋‚˜ํƒ€๋ƒ„

 

4. new Date(year, month, date, hours, minutes, seconds, ms)

์ฃผ์–ด์ง„ ์ธ์ˆ˜๋ฅผ ์กฐํ•ฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋‚ ์งœ๊ฐ€ ์ €์žฅ๋œ ๊ฐ์ฒด๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค. (์ง€์—ญ ์‹œ๊ฐ„๋Œ€ ๊ธฐ์ค€)

์ฒซ๋ฒˆ์งธ ์ธ์ˆ˜์™€ ๋‘๋ฒˆ์งธ ์ธ์ˆ˜๋งŒ ํ•„์ˆ˜๊ฐ’์ด๋‹ค.

  • year๋Š” ๋ฐ˜๋“œ์‹œ 4์ž๋ฆฌ ์ˆซ์ž์—ฌ์•„ ํ•œ๋‹ค.
  • month๋Š” 0๋ถ€ํ„ฐ 11 ์‚ฌ์ด์˜ ์ˆซ์ž์—ฌ์•ผ ํ•œ๋‹ค.
  • date ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ, 1์ผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.
  • hours/minutes/seconds/ms ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ, 0์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.
let a = new Date(25, 7);	// year๋ฅผ ๋‘์ž๋ฆฌ๋กœ ์ž…๋ ฅํ•˜์—ฌ 1925๋…„๋„๋กœ ์ž…๋ ฅ๋จ
console.log(a);

let b = new Date(2025, 7);
console.log(b);

let c = new Date(2025, 7, 25, 5, 11, 3, 2543);
console.log(c);

 

ํ•„์ˆ˜ ์ธ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ 1970๋…„ ์ฒซ๋‚ ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 


3. Date ๋ฉ”์„œ๋“œ๋กœ ๋‚ ์งœ ๊ตฌ์„ฑ์š”์†Œ ์–ป๊ธฐ

1. get ํ•จ์ˆ˜

  • getFullYear()
    ์—ฐ๋„(๋„ค์ž๋ฆฌ์ˆ˜)๋ฅผ ๋ฐ˜ํ™˜
  • getMonth()
    ์›”์„ ๋ฐ˜ํ™˜(0์ด์ƒ 11์ดํ•˜)
  • getDate()
    ์ผ์„ ๋ฐ˜ํ™˜(1์ด์ƒ 31 ์ดํ•˜)
  • getHours(), getMinutes(), getSeconds(), getFilliseconds()
    ์‹œ, ๋ถ„, ์ดˆ, ๋ฐ€๋ฆฌ์ดˆ๋ฅผ ๋ฐ˜ํ™˜
  • getDay()
    0(์ผ์š”์ผ)๋ถ€ํ„ฐ 6(ํ† ์š”์ผ)๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜
  • getTime()
    ์ฃผ์–ด์ง„ ์ผ์‹œ์™€ 1970๋…„ 1์›” 1์ผ 00์‹œ 00๋ถ„ 00์ดˆ ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์˜ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋ฐ˜ํ™˜
  • getTimezoneOffset()
    ํ˜„์ง€ ์‹œ๊ฐ๊ณผ ํ‘œ์ค€ ์‹œ๊ฐ์˜ ์ฐจ์ด(๋ถ„)๋ฅผ ๋ฐ˜ํ™˜
// ํ˜„์žฌ ์ผ์‹œ
let date = new Date();

console.log(`getFullYear(): ${date.getFullYear()}`);
console.log(`getMonth(): ${date.getMonth()}`);
console.log(`getDate(): ${date.getDate()}`);
console.log(`getHours(): ${date.getHours()}`);
console.log(`getDay(): ${date.getDay()}`);
console.log(`getTime(): ${date.getTime()}`);
console.log(`getTimezoneOffset(): ${date.getTimezoneOffset()}`);

 

 

2. ๊ตญ๊ฐ€ ํ‘œ๊ธฐ์— ๋งž์ถฐ ์‹œ๊ฐ„ ์ •๋ณด๋ฅผ ํ‘œํ˜„

๊ฐ„๋‹จํ•˜๊ฒŒ ์‹œ๊ฐ„ ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„๋ž˜ ๋ฉ”์†Œ๋“œ๋“ค์€ ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์— ์„ค์ •๋œ ๊ตญ๊ฐ€์˜ ํ‘œ๊ธฐ์— ๋งž์ถฐ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๋ณด์—ฌ์ค€๋‹ค.

  • toLocalDateString()
  • toLocaleTimeString()
  • toLocalString()
let myDate = new Date();

console.log(myDate.toLocaleDateString()); // myDate๊ฐ€ ๊ฐ€์ง„ ๋‚ ์งœ์— ๋Œ€ํ•œ ์ •๋ณด (๋…„. ์›”. ์ผ)
console.log(myDate.toLocaleTimeString()); // myDate๊ฐ€ ๊ฐ€์ง„ ์‹œ๊ฐ„์— ๋Œ€ํ•œ ์ •๋ณด (์‹œ:๋ถ„:์ดˆ)
console.log(myDate.toLocaleString()); // myDate๊ฐ€ ๊ฐ€์ง„ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์— ๋Œ€ํ•œ ์ •๋ณด (๋…„. ์›”. ์ผ ์‹œ:๋ถ„:์ดˆ)

 


4. Date ๋ฉ”์„œ๋“œ๋กœ ๋‚ ์งœ ๊ตฌ์„ฑ์š”์†Œ ์„ค์ •ํ•˜๊ธฐ

get ๋Œ€์‹  set์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ ๋‚ ์งœ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ Day๋Š” ์„ค์ •ํ•  ์ˆ˜ ์—†๋‹ค.

let date = new Date();

console.log(`setFullYear(year, [month], [date]): ${date.setFullYear(2000)}`);
console.log(`setMonth(month,[date]): ${date.setMonth(7, 25)}`);
console.log(`setDate(date): ${date.setDate(13)}`);
// setHours, setMinutes, setSeconds, setMilliseconds ์žˆ์Œ(์ธ์ž๋Š” ๋ณธ์ธ ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘)
console.log(`setHours(hour, [min], [sec], [ms]): ${date.setHours(23)}`);
console.log(`setTime(milliseconds): ${date.setTime(24* 3600 * 1000)}`);

 


5. ์ž๋™๊ณ ์นจ

Date ๊ฐ์ฒด๋Š” ์ž๋™๊ณ ์นจ ๊ธฐ๋Šฅ์ด ์žˆ์–ด์„œ, ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๊ฐ’์„ ์„ค์ •ํ•˜๋ ค๊ณ ํ•˜๋ฉด ์ž๋™ ๊ณ ์นจ ๊ธฐ๋Šฅ์ด ํ™œ์„ฑํ™”๋˜์–ด ๊ฐ’์ด ์ž๋™์œผ๋กœ ์ˆ˜์ •๋œ๋‹ค.

์ž…๋ ฅ๋ฐ›์€ ๋‚ ์งœ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด ์ดˆ๊ณผ๋ถ„์€ ์ž๋™์œผ๋กœ ๋‹ค์Œ ๋‚ ์งœ ๊ตฌ์„ฑ ์š”์†Œ์— ๋ฐฐ๋ถ„๋œ๋‹ค.

let date = new Date(2014, 0, 33);
console.log(date);

31์ผ +2์ผ์ธ 2์›” 1์ผ

 

 

์ž๋™ ๊ณ ์นจ์€ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„์˜ ๋‚ ์งœ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐ์— ์ข…์ข… ์‚ฌ์šฉ๋œ๋‹ค.

let date = new Date(2025, 1, 1 + 1000);
console.log(date);

 

 


6. ์‹œ์ฐจ ์ธก์ •ํ•˜๊ธฐ

1. Date ๊ฐ์ฒด๋ฅผ ์ˆซ์ž๋กœ ๋ณ€๊ฒฝ

Date ๊ฐ์ฒด๋ฅผ ์ˆซ์žํ˜•์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ๋œ๋‹ค. (getTime() ํ˜ธ์ถœ ์‹œ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’)

let startDate = new Date();
for(let i=0;i<100000;i++){
    let doSomethin = i*i*i;
}
let endDate = new Date();

console.log(`๋ฐ˜๋ณต๋ฌธ์„ ๋„๋Š”๋ฐ ${endDate - startDate}๋ฐ€๋ฆฌ์ดˆ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.`);

 

2. Date.now()

Date ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์•„๋„ Date.now ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ฐจ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Date.now()์€ new Date().getTime()๊ณผ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ํ•˜์ง€๋งŒ, Date ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์•„, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ์ผ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, ์„ฑ๋Šฅ์ด ๋” ์ข‹๋‹ค.

let startDate = new Date();
for(let i=0;i<100000;i++){
    let doSomethin = i*i*i;
}
let endDate = Date.now();

console.log(`๋ฐ˜๋ณต๋ฌธ์„ ๋„๋Š”๋ฐ ${endDate - startDate}๋ฐ€๋ฆฌ์ดˆ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.`);

 

 


7. Date ๊ฐ์ฒด์˜ ํ˜•๋ณ€ํ™˜

Date ๊ฐ์ฒด์˜ ์ž๋ฃŒํ˜•์„ ํ™•์ธํ•ด๋ณด์ž

let myDate = new Date(2017, 4, 18);

console.log(typeof myDate); // object
console.log(String(myDate)); // Thu May 18 2017 00:00:00 GMT+0900 (Korean Standard Time)
console.log(Number(myDate)); // 1495033200000
console.log(Boolean(myDate)); // true

Date ๊ฐ์ฒด๊ฐ€ String, Number, Boolean์œผ๋กœ ํ˜•๋ณ€ํ™˜์ด ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ number ํƒ€์ž…์˜ ๊ฐ’์€ getTime()์„ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ์™€ ๊ฐ™์ด ๋˜‘๊ฐ™์€ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ์–ป๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๋”ฐ๋ผ์„œ Date ๊ฐ์ฒด๋กœ ์‚ฌ์น™ ์—ฐ์‚ฐ์„ ํ•˜์—ฌ ์‹œ๊ฐ„์ฐจ๋ฅผ ๊ตฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

let myDate = new Date(2017, 4, 18);
let myDate2 = new Date(2017, 4, 24);

let timeDiff = myDate2 - myDate;

console.log(timeDiff);
console.log(timeDiff/1000); // sec
console.log(timeDiff/1000/60);  // min
console.log(timeDiff/1000/60/60);   // hour
console.log(timeDiff/1000/60/60/24) // date

 

 

 

 

์ฐธ๊ณ 

๋ฐ˜์‘ํ˜•