-
[JavaScript/VanillaJS] ๋ ์ง ๊ณ์ฐ/๋ ์ง ํฌ๋งทํ (setDate/format/...)javascript 2019. 4. 17. 15:42
๋ ์ง๋ฅผ ๊ฐ์ง๊ณ ์ฝ๋ฉ์ ํด์ผํ ๋๊ฐ ์๋ค.
์ด๋ป๊ฒ ํด์ผํ ๊น? ์๊ฐํ ๋จ๊ณ์ ์ง์ฆ๋๋ค.
์๋ฃ๋ฅผ ์ฐพ๊ณ ์ฝ๋ฉ์ ํ๋ฉฐ ๋ฐ๋๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ณด๊ณ ์๋ค๋ณด๋ฉด ์ฌ๋ฐ์ด์ง๋ค.
์ค๋์ ๊ธฐ์ค์ผ๋ก 3๊ฐ์ ์ ๋ ์ง๋ฅผ ๊ตฌํด์ผ ํ ์ผ์ด ์์๋ค.
๋ ์ง ๊ณ์ฐ / date format
function init() { var prevDate = formerDate(); //...์๋ต } function formerDate() { var objDate = new Date(); objDate.setMonth(objDate.getMonth() - 3); // 3๊ฐ์ ์ var formerDate = formatDate(objDate); return formerDate; } /** * @since 2019-04-17 * date format function */ function formatDate(date){ var prevYear = date.getFullYear(); //2019 var prevMonth = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1; //01 var prevDay = date.getDate() < 10 ? "0" + date.getDate() : date.getDate(); //17 var prev_date = prevYear + "-" + prevMonth + "-" + prevDay; //2019-01-17 return prev_date; }
function init( )
init( )์์ prevDate๋ณ์์ formerDate( )์ return ๊ฐ์ ์ด๊ธฐํํ๋ค.
prevDate ๋ณ์๋ inputํ๊ทธ์ value์ ๋ค์ด๊ฐ์๋ ์๊ณ , ์ฌ์ฉํ๊ธฐ ๋๋ฆ์ด๋ค.
์ฃผ๋ก input์ ๊ธฐ๋ณธ value๋ก ์ฌ์ฉ์ ํ๋ค.
function formerDate( )
formerDate( )์์๋
objDate ๋ณ์์ Date ๊ฐ์ฒด๋ฅผ ์ธ์คํด์คํํ์ฌ ์ด๊ธฐํํ๋ค. (date๋ก ํ๊ณ ์ถ์์ผ๋, date ๋ณ์๋ช ์ ์ด๋ฏธ ๋ค๋ฅธ ๊ณณ์์ ์ฌ์ฉํ๊ณ ์์์...ใ )
var objDate = new Date();
objDate.setMonth(objDdate.getMonth() + 1);
//+ 1์ ํ๋ ์ด์ ๋ getMonth()๊ฐ ํ์ฌ ๋ฌ - 1์ ๊ฐ์ returnํด์ฃผ๊ธฐ ๋๋ฌธ
์์ ์ฝ๋ฉ์ ๋ณด์. ์ค๋์ด 04์ 17์ผ์ด๋ค.
getMonth( )์ ๊ฒฝ์ฐ 0๋ถํฐ ์์์ด๋ค. (๊ผญ ๋ฐฐ์ด๋ง๋ฅ, ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด [0]์ธ ๊ฒ์ฒ๋ผ 1์์ด 0์ผ๋ก ๋์จ๋ค.)
objDate.getMonth( ) ๋ฅผ ํธ์ถํ๋ฉด 3(์)์ด ๋์จ๋ค. ๊ทธ๋์ + 1์ ํด์ผ (๋ด๊ฐ ์จ์ฌ๊ณ ์๋) ํ์ฌ์ ๋ฌ์ ์ ๋๋ก ๋ฐ์ ์ ์๋ค.
๋๋ 3๊ฐ์ ์ ์ผ๋ก ๊ฐ๊ณ ์ถ๋ค. ๋ค๋ก ๊ฐ ๋ ๊ฐ๊ณ ์ถ์ ๋งํผ๋ง ์ ์ผ๋ฉด ๋๋ค.
์ฐ๋(year)
getMonth( )๋ฅผ ์ธ๊ธํ ๊น์ ์ฐ๋์ ๊ด๋ จํ ๊ฒ๋ ์ ์ด๋ณธ๋ค.
getYear( )์ด ์๊ณ getFullYear( )์ด ์๋ค. ๋ ๋ฉ์๋๋ ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ์ ๋ด๋ฑ๋๋ค. ์๋ ์์(์บก์ฒ)๋ฅผ ๋ณด์.
getYear( )์ ๊ฒฝ์ฐ ์ ์ฒด ์ฐ๋๋ฅผ ๋ฐํํ์ง ์๋๋ค. ์ ์ฒด ์ฐ๋๋ฅผ ๋ฐํํ์ง ์๋๋ค? 2000๋ ๋จ์๋ฅผ ๋ฐํํ์ง ์๋ ์๋ฏธ๊ฐ๋ค.
MDN์์๋ getYear( ) ๋์ getFullYear( )๋ฅผ ์ฌ์ฉํ๊ธฐ๋ฅผ ๊ถ์ฅํ๋ค. ๋ธ๋ผ์ฐ์ ๋ง๋ค ๋ค๋ฅด๊ฒ ์ง๋ง getYear( )๋ฅผ ์ง์ํ์ง ์๋ ์ถ์ธ๋ค.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date/getYear
Date.prototype.getYear()
The getYear() method returns the year in the specified date according to local time. Because getYear() does not return full years ("year 2000 problem"), it is no longer used and has been replaced by the getFullYear() method.
developer.mozilla.org
๊ทธ๋ ๋ค๋ฉด, getFullYear( )๋???
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date/getFullYear
Date.prototype.getFullYear()
getFullYear () ๋ฉ์๋๋ ํ์ง ์๊ฐ์ ๋ฐ๋ผ ์ง์ ๋ ๋ ์ง์ ์ฐ๋๋ฅผ ๋ฆฌํดํฉ๋๋ค.
developer.mozilla.org
์์ ๋น๊ตํ ์ฌ์ง์๋ ๋์์๋ฏ์ด ์์์์์~ ์ถ๋ ฅ๋๋ค. : )
์ผ(date)
์ฐ๋๋ ์ธ๊ธํ๊ณ , ๋ฌ๋ ์ด์ผ๊ธฐํ์ผ๋ ์ผ์ ์๊ธฐํด๋ณด์.
function formatDate( )์์ ๋ณด๋ฉด ๋๋ ์ผ์ ๋ด์ ๋ณ์์ day๋ผ๊ณ ์ ์ด๋์๋ค.
javascript์์ getDay( )๋ ์์ผ์ ๊ฐ์ ธ์จ๋ค. ์ฌ์ฉ ์ค์ธ ๋ณ์๋ช ์ค์ prevDate๋ผ๋ ๋ณ์๊ฐ ์์ด์ ์ค๋ณต๋๊ธฐ์ day๋ผ๊ณ ์ ์๊ณ ๊ทธ ๋ฐ๋ก ์๋ ๋ณ์๋ ๋ณด๋ฉด prev_date๋ผ๊ณ ์ธ๋์ค์ฝ์ด(์ธ๋๋ฐ, _)๋ฅผ ์ฌ์ฉํ๋ค.
(ํท๊ฐ๋ฆด๊น๋ด ๋ ์๊ธฐํ๋ค. getDay( )๋ ์์ผ์ ๊ฐ์ ธ์ค๋ ๋ฉ์๋๋ค.)
๋ฌดํผ ์ผ๋ ๋ฌ์ฒ๋ผ set์ ํ ์ ์๋ค. ์๋๋ฅผ ๋ณด์.
let d = new Date(2019, 6, 1); // Mon Jul 01 2019 00:00:00 GMT+0900 (ํ๊ตญ ํ์ค์)
objDate.setDate(objDate.getDate(32)); // ์ผ์๊ฐ ๊ฐ์ฅ ๋ง์ ๋ 31์ผ์ด๋ค. 32์ผ์ ์ถ๊ฐํด์ set์ ํ๋ฉด 7์์ ๊ฒฝ์ฐ 8์ 1์ผ๋ก set๋๋ค.
Date ๊ฐ์ฒด๋ฅผ ์ธ์คํด์คํ ํ ๋์ ๋ , ์, ์ผ์ ์ ๊ฒ ๋๋ฉด ๊ทธ ๋๋ก ์ด๊ธฐํ๊ฐ ๋๋๋ฐ, ์ค์ํ ๊ฒ์ ๋ ์์ด ์๋ค๊ฒ ๋์จ๋ค.
6์์ June์ด๊ณ 7์์ July์ด๋ค. Mon Jul ...
July๊ฐ ๋์๋ค... 0์ ์ ์๋ค๋ฉด? 1์ด ๋์์ ๊ฒ์ด๊ณ , 10์ ์ ์๋ค๋ฉด 11์ด ๋์์ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค. 6์ ์ ์๊ธฐ์ 7์์ด ๋์๋ค.
getDate(32)๋ 32์ผ์ ์ถ๊ฐํ๋๊ฑด๋ฐ 7์ 1์ผ์ ๊ธฐ์ค์ผ๋ก 32์ผ์ ์ถ๊ฐํ๋ฉด 8์๋ก ์๋์ผ๋ก ๋์ด๊ฐ๋ค.
(์ด๊ฒ ์ง์ง ๋ฉ๋ฆฌํธ๋ผ๊ณ ์๊ฐํจ..! ์๋์ด๋ผ๋... ๋ก์ง์ ์ง์ ์งฐ๋ค๊ณ ์๊ฐํ๋ฉด ์ดํ ๊ธธ๊ณ ๊ธธ์ด์ง ์์ค, ์ฐ์ฉ.)
๋จ ํ ์ค๋ก ์ ๋๊ธฐ๋๊ฒ ๋๋ฌ๋ค. 7์ผ ๋จ์, ํน์ 10์ผ, 15์ผ ๋จ์๋ก ์ ์๋ค๊ณ ํ๋ค๋ฉด 7์ 25์ผ์ 7์ผ ๋ค๊ฐ ์๋์ผ๋ก ๋์จ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์๊ฐ, ๋ถ, ์ด๋ getHours( ), getMinutes( ), getSeconds( )๋ก ์ง์ ๊ฐ๋ค์ ๋ค๋ฃฐ ์ ์๋ค!
function formatDate( ), ๋ฐฑํฑ( ` )
formatDate(date)๋ 3๊ฐ์ ์ ์ ๋ ์ง๋ฅผ formattingํ์ง ์์์ Wed Apr 17 2019 17:44:06 GMT+0900 (ํ๊ตญ ํ์ค์) ์ด๋ฐ ์(์ด๋ฐ์..!)์ผ๋ก ๋์ค๋ date๋ฅผ ์ธ์๋ก ๋ฐ์ ์์์์๊ฒ yyyy-MM-dd ์์ผ๋ก ํด์ค ์ข์ ํจ์๋ค.
์๋ก ์ฌ๋ผ๊ฐ์ง๋ง์ธ์.
๋ฐ๋ก ์๋์ ๋ค์ ์ ์๊ฒ์ : )
function formatDate(date){
var prevYear = date.getFullYear(); //2019
var prevMonth = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1; //01
var prevDay = date.getDate() < 10 ? "0" + date.getDate() : date.getDate(); //17
var prev_date = prevYear + "-" + prevMonth + "-" + prevDay; //2019-01-17
return prev_date;
}
formerDate( )์์ formatDate( )๋ฅผ ํธ์ถํ ๋ formatting๋์ง ์์ date๋ฅผ ์ธ์๋ก ๋๊ธด๋ค.
๊ทธ ์ธ์๋ฅผ ๋ฐ์์ ์ชผ๊ฐ๋ฒ๋ฆฐ๋ค(!?).
์ฐ, ์, ์ผ๋ก ๋ค ์ชผ๊ฐค ๋ ์๊ณผ ์ผ์ ํ์๋ฆฌ ์๊ฐ ๋์ค๊ธฐ ๋ง๋ จ. ๊ทธ๋ฌ๋ฉด 2019-1-17 ์ด๋ ๊ฒ format์ด ๋ ํ ๋ฐ ์ฐ๋ฆฌ๊ฐ ์ํ๋๊ฑด 2019-01-17์ด๋ค. ์ฌ์ค string + ๊ฐ์ ์์ style์ด๊ณ ๋ฐฑํฑ( ` )์ ์ฌ์ฉํ๋ฉด ๋ ๋ง์กฑ์ค๋ฌ์ด ์ฝ๋ฉ์ ํ ์ ์๋ค.
ํค๋ณด๋์์ tabํค ์์ ์๋ `~ ์ ๋ฒํผ์ด ๋ฐฑํฑ( ` )๋ฒํผ์ด๋ค.
๋ฐฑํฑ์ ์ฌ์ฉํ ์ฝ๋ฉ์ ์ด๋ค ๊ฒ์ธ๊ฐ? ์๋๋ฅผ ๋ณด์.
function formatDate(date){
var prevYear = date.getFullYear(); //2019
var prevMonth = date.getMonth() + 1 < 10 ? `0${date.getMonth() + 1)}` : date.getMonth() + 1; //01
var prevDay = date.getDate() < 10 ? `0${date.getDate()}` : date.getDate(); //17
var prev_date = `${prevYear}-${prevMonth}-${prevDay}`; //2019-01-17
return prev_date;
}
์๋ ๊ฒ ์ฌ์ฉํ ์ ์์ ๊ฒ์ด๋ค.
์์(์๋ ์บก์ฒ)๋ฅผ ๋ณด์๋ฉด,
์ง์์~
3์์ด ๋ณ๋ก ์์์๊ฒ ๋์๋ค.
`${hours < 10 ? `0${hours}` : hours}:${minutes < 10 ? `0${minutes}` : minutes}:${seconds < 10 ? `0${seconds}` : seconds}`
์์ ์ฝ๋ฉ์ ๋ฐฑํฑ์ ์ฌ์ฉํ ์๊ฐ์ด๋ค.
10๋ณด๋ค ์๋๋ฉด 0์ ๋ถ์ด๊ณ ์๋๋ฉด ๊ทธ๋ฅ ๊ทธ๋๋ก๋ผ๋ 3ํญ์ฐ์ฐ์๋ค.
์ด๋ ๊ฒ ์๊ณผ ์ผ๋ ์์ฑํ๋ฉด ๋๋ค.
'javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ