๐ฅ 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 |
---|