PainPoint

[PainPoint] Date() ํ•จ์ˆ˜๋กœ ์ƒ์„ฑ๋œ ๋‚ ์งœ ๋ฐ์ดํ„ฐ ์˜ค๋ฅ˜

Ama_grammer 2024. 10. 4. 00:16

๐Ÿ’ฅ Date() ํ•จ์ˆ˜๋กœ ์ƒ์„ฑ๋œ ๋‚ ์งœ ๋ฐ์ดํ„ฐ ์˜ค๋ฅ˜

- Mongoose๋กœ ์ƒ์„ฑ๋œ ๋‚ ์งœ๋ฅผ Date์— ๋„ฃ์–ด ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ์˜ ์ฒ˜๋ฆฌ ๊ณผ์ •์ค‘ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

APi Area

// Long piece of code...

const PostSchema = new Schema({
  title: String,
  summary: String,
  content: String,
  cover: String,
  author: String,
  createdAt: Date,
  updatedAt: Date,
});

PostSchema.pre('save', function (next) {
  const currentDate = new Date();
  currentDate.setHours(currentDate.getHours() + 9);
  this.createdAt = currentDate;
  if (!this.createdAt) this.createdAt = currentDate;
  console.log(this.createdAt);
  console.log(this.updatedAt);
  next();
});

 

Api ์—์„œ currentDate ์—์„œ ์‹œ๊ฐ„์„ ๊ฐ€์ง€๊ณ ์˜ค๋ฉด UTC ํ‘œ์ค€์— ๋”ฐ๋ผ ๋Œ€ํ•œ๋ฏผ๊ตญ๊ณผ 9์‹œ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—
๊ทธ๊ฒƒ์˜ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด 9๋ฅผ ๋”ํ•ด์ฃผ๋Š” ๊ณผ์ •์„ ์ง„ํ–‰ํ–ˆ๋‹ค.

Client Area

// Long piece of code...

const PostCard = ({ list }) => {
  const date = new Date(list.createdAt);
  const day = date.toLocaleDateString();
  const time = date.toLocaleTimeString([], {
    hour: '2-digit',
    minute: '2-digit',
  });

client ์˜์—ญ์—์„œ ์˜ˆ์ƒํ•œ ๋‚ ์งœ๋Š” UTC + 9 ๋กœ ํ•œ๊ตญ์‹œ๊ฐ„์ด ์ถœ๋ ฅ๋˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ๊ฒฐ๊ณผ๋Š” ์ด์ƒํ•˜๊ฒŒ 9๊ฐ€ ์•„๋‹Œ 18์ด ๋”ํ•ด์ง„ ๊ฐ’์ด ์ถœ๋ ฅ์ด ๋˜์—ˆ๋‹ค.


๐Ÿฅบ ์‹œ๋„ํ•œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•(1)

MongoDB ์ดˆ๊ธฐ ์…‹ํŒ…์ค‘ ์ง€์—ญ์„ ์„ค์ •ํ•˜๋ฉด์„œ ์ž๋™์œผ๋กœ ์ง€์—ญ ์‹œ๊ฐ„์œผ๋กœ ์„ค์ •?

 

createdAt ์€ mongoDB์˜ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์ธ mongoose์˜ ๊ธฐ๋Šฅ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์• ์ดˆ์— mongoDB์™€ ๊ด€๋ จ ์žˆ๋Š” ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ํ˜น์‹œ ์ดˆ๊ธฐ์— ์ง€์—ญ์„ ์„ค์ •ํ•œ ๋ถ€๋ถ„์—์„œ ์นœ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š”๊ฑด๊ฐ€ ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ์ง€๋งŒ, ์–ด๋”œ ๋ด๋„ ๊ทธ๋Ÿฐ ๋ง์€ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ๊ณ  chatGPT์— ๋”ฐ๋ฅด๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ UTC ํ‘œ์ค€์— ๋งž๊ฒŒ ๊ฐ’์ด ์ƒ์„ฑ๋œ๋‹ค๋Š” ๋‹ต์„ ๋“ค์—ˆ๋‹ค.

๐Ÿฅบ ์‹œ๋„ํ•œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•(2)

Date ํ•จ์ˆ˜ ์ž์ฒด์— ์ง€์—ญ์„ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‚˜?

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ณต๋ถ€ํ–ˆ์œผ๋ฉด ์ด ๊ฐ€์ •์€ ํ‹€๋ ธ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ, ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๊ฒฐ๊ณผ๋Š” ๋งˆ์น˜ Date()์†์— ๋งค๊ฒŒ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๊ทธ ๊ฐ’์„ ์ง€์—ญ์— ๋งž๋Š” ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ๊ฒƒ ๊ฐ™์€ ์ถœ๋ ฅ์„ ๋ณด์—ฌ์ฃผ์—ˆ๋‹ค.

console.log('createdAt : ', list.createdAt);

console.log('date : ', date);

console.log('day : ', day);

console.log('time : ', time);

 

ํ•˜์ง€๋งŒ MDN ์‚ฌ์ดํŠธ์—์„œ Date()์— ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์–ด์ค€๋‹ค ํ•œ๋“ค ๊ทธ ๊ฐ’์ด ์ง€์—ญ ์‹œ๊ฐ„์— ๋งž๊ฒŒ ๋ณ€ํ™”๋˜๋Š” ๋‚ด์š”์€ ์ „ํ˜€ ์—†๊ณ  ์˜ค๋กœ์ง€ UTC ํ‘œ์ค€์œผ๋กœ ๊ฐ’์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๐Ÿฅณ ์ •๋‹ต์€ terminal๊ณผ ๋ธŒ๋ผ์šฐ์ €์˜ console์˜์—ญ์—์„œ์˜ ์ถœ๋ ฅ์˜ ์ฐจ์ด.

์–ด๋–ค ๋ฌธ์ œ์ธ์ง€๋ฅผ ์ฐพ์ง€๋ชปํ•ด ํ•ด๋งค๋˜ ์ค‘ ChatGPT๊ฐ€ ์—ฌ๋Ÿฌ ๋ฌธ์ œ์˜ ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์—ฌ์ฃผ์—ˆ๋Š”๋ฐ ๊ทธ์ค‘ ์•„๋ž˜์˜ ๋ฌธ์ œ๋ฅผ ๋ณด์•˜๋‹ค. 

 

์ด๊ฒƒ์„ ๋ณด๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ Console ์—์„œ์˜ ์ถœ๋ ฅ๊ณผ VSC์˜ ํ„ฐ๋ฏธ๋„์—์„œ์˜ ์ถœ๋ ฅ ์ƒํƒœ๋ฅผ ๋น„๊ตํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

const date = new Date().toISOString();

const currentDate = new Date(date);

 

terminal output

date :  2024-05-24T08:33:45.473Z

curr :  2024-05-24T08:33:45.473Z

 

 

web console output

date : 2024-05-24T08:35:11.519Z

curr : Fri May 24 2024 17:35:11 GMT+0900 (ํ•œ๊ตญ ํ‘œ์ค€์‹œ)


๐Ÿ’‚‍โ™‚๏ธ ๋А๋‚€์ 

ํ„ฐ๋ฏธ๋„์€ ์ฃผ๋กœ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰, ์ฝ”๋“œ ์ปดํŒŒ์ผ, Git๊ณผ ๊ฐ™์€ ๋ฒ„์ „ ์ œ์–ด ์‹œ์Šคํ…œ ๊ด€๋ฆฌ, ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ๊ณผ ๊ด€๋ จ๋œ ๋‹ค์–‘ํ•œ ์ž‘์—… ์ˆ˜ํ–‰์— ์‚ฌ์šฉํ•˜๊ณ , ์ฝ˜์†” ์˜์—ญ์€ ํ„ฐ๋ฏธ๋„์ฒ˜๋Ÿผ JavaScript ์ฝ”๋“œ๋ฅผ ๋””๋ฒ„๊ทธ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์š”์†Œ๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ  ๋„คํŠธ์›Œํฌ ํ™œ๋™์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๊ณ  JavaScript ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ๋””๋ฒ„๊น… ๋ชฉ์ ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋ก ํ•  ์ˆ˜์žˆ๋‹ค. ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ์ด ๋‘˜์˜ ์ฐจ์ด๋ฅผ ํฌ๊ฒŒ ๋А๋‚„ ์ˆœ๊ฐ„์ด ์—†์—ˆ๊ธฐ์— ํ„ฐ๋ฏธ๋„๊ณผ ์›น Console์€ ์• ์ดˆ์— ๊ฐ™์€๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฒˆ์— ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋กœ ์•Œ์•„๋ณธ ๊ฒฐ๊ณผ ํ„ฐ๋ฏธ๋„๊ณผ ์ฝ˜์†”์€ ๋ชจ๋‘ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ์ฝ”๋“œ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์œ„์™€ ๊ฐ™์ด ๋ธŒ๋ผ์šฐ์ €์˜ ์ฝ˜์†”์€ ์‚ฌ์šฉ ๊ตญ๊ฐ€์— ๋”ฐ๋ผ์„œ ๋‚ด์žฅ ํ•จ์ˆ˜๋กœ ์‹คํ–‰๋œ ๊ฐ’์ด ๋ณ€๋™ ๋  ์ˆ˜ ์žˆ์Œ์„ ํ™•์ธํ–ˆ๊ณ  ๊ฐ’์„ ๊ฐ€๊ณตํ•˜๋Š” ๋‹จ๊ณ„์—์„œ ๊ณ ๋ คํ•ด์•ผํ•  ๋ถ€๋ถ„์„ ํ•™์Šตํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์ฐธ๊ณ  ์‚ฌ์ดํŠธ

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date
https://www.w3schools.com/js/js_dates.asp

 

W3Schools.com

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

 

Date - JavaScript | MDN

JavaScript Date ๊ฐ์ฒด๋Š” ์‹œ๊ฐ„์˜ ํ•œ ์ ์„ ํ”Œ๋žซํผ์— ์ข…์†๋˜์ง€ ์•Š๋Š” ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. Date ๊ฐ์ฒด๋Š” 1970๋…„ 1์›” 1์ผ UTC(ํ˜‘์ • ์„ธ๊ณ„์‹œ) ์ž์ •๊ณผ์˜ ์‹œ๊ฐ„ ์ฐจ์ด๋ฅผ ๋ฐ€๋ฆฌ์ดˆ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ ๊ฐ’์„ ๋‹ด์Šต๋‹ˆ๋‹ค.

developer.mozilla.org

 

'PainPoint' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[PainPoint] Mongoose ์Šคํ‚ค๋งˆ ํƒ€์ž… ์ฃผ์˜  (0) 2024.10.21