ABOUT ME

๊ณต๋ถ€ํ•˜๋ฉด์„œ ๊ธฐ๋กํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ๋“ค์„ ํฌ์ŠคํŒ…ํ•˜๊ณ  ์žˆ๋Š” ๐Ÿ‘‘JERRY๐Ÿ‘‘์ž…๋‹ˆ๋‹ค. ์ด ๊ณณ์€ JERRY์˜ ๊ณต๋ถ€๋ฐฉ์ž…๋‹ˆ๋‹ค :)

Today
Yesterday
Total
  • [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 ๋ณ€์ˆ˜๋ช…์€ ์ด๋ฏธ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Œ...ใ…œ)

     

    1. var objDate = new Date();
    2. objDate.setMonth(objDdate.getMonth() + 1);
    3. //+ 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์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜๋ฅผ ๋ณด์ž.

     

    1. let d = new Date(2019, 6, 1); // Mon Jul 01 2019 00:00:00 GMT+0900 (ํ•œ๊ตญ ํ‘œ์ค€์‹œ)
    2. 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 ์‹์œผ๋กœ ํ•ด์ค„ ์ข‹์€ ํ•จ์ˆ˜๋‹ค.

     

    ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€์ง€๋งˆ์„ธ์š”.

    ๋ฐ”๋กœ ์•„๋ž˜์— ๋‹ค์‹œ ์ ์„๊ฒŒ์š” : )

     

    1. function formatDate(date){
    2. var prevYear = date.getFullYear(); //2019
    3. var prevMonth = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1; //01
    4. var prevDay = date.getDate() < 10 ? "0" + date.getDate() : date.getDate(); //17
    5. var prev_date = prevYear + "-" + prevMonth + "-" + prevDay; //2019-01-17
    6. return prev_date;
    7. }

    formerDate( )์—์„œ formatDate( )๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ formatting๋˜์ง€ ์•Š์€ date๋ฅผ ์ธ์ž๋กœ ๋„˜๊ธด๋‹ค.

    ๊ทธ ์ธ์ž๋ฅผ ๋ฐ›์•„์„œ ์ชผ๊ฐœ๋ฒ„๋ฆฐ๋‹ค(!?).

    ์—ฐ, ์›”, ์ผ๋กœ ๋‹ค ์ชผ๊ฐค ๋•Œ ์›”๊ณผ ์ผ์€ ํ•œ์ž๋ฆฌ ์ˆ˜๊ฐ€ ๋‚˜์˜ค๊ธฐ ๋งˆ๋ จ. ๊ทธ๋Ÿฌ๋ฉด 2019-1-17 ์ด๋ ‡๊ฒŒ format์ด ๋ ํ…๋ฐ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š”๊ฑด 2019-01-17์ด๋‹ค. ์‚ฌ์‹ค string + ๊ฐ’์€ ์˜ˆ์ „ style์ด๊ณ  ๋ฐฑํ‹ฑ( ` )์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๋งŒ์กฑ์Šค๋Ÿฌ์šด ์ฝ”๋”ฉ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    ํ‚ค๋ณด๋“œ์—์„œ tabํ‚ค ์œ„์— ์žˆ๋Š” `~ ์š” ๋ฒ„ํŠผ์ด ๋ฐฑํ‹ฑ( ` )๋ฒ„ํŠผ์ด๋‹ค. 

    ๋ฐฑํ‹ฑ์„ ์‚ฌ์šฉํ•œ ์ฝ”๋”ฉ์€ ์–ด๋–ค ๊ฒƒ์ธ๊ฐ€? ์•„๋ž˜๋ฅผ ๋ณด์ž.

    1. function formatDate(date){
    2. var prevYear = date.getFullYear(); //2019
    3. var prevMonth = date.getMonth() + 1 < 10 ? `0${date.getMonth() + 1)}` : date.getMonth() + 1; //01
    4. var prevDay = date.getDate() < 10 ? `0${date.getDate()}` : date.getDate(); //17
    5. var prev_date = `${prevYear}-${prevMonth}-${prevDay}`; //2019-01-17
    6. return prev_date;
    7. }

    ์š”๋ ‡๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

    ์˜ˆ์‹œ(์•„๋ž˜ ์บก์ฒ˜)๋ฅผ ๋ณด์ž๋ฉด,

     

    ์งœ์ž์ž”~

    3์›”์ด ๋ณ„๋กœ ์•ˆ์˜ˆ์˜๊ฒŒ ๋‚˜์™”๋‹ค.

     

     

    1. `${hours < 10 ? `0${hours}` : hours}:${minutes < 10 ? `0${minutes}` : minutes}:${seconds < 10 ? `0${seconds}` : seconds}`

    ์œ„์˜ ์ฝ”๋”ฉ์€ ๋ฐฑํ‹ฑ์„ ์‚ฌ์šฉํ•œ ์‹œ๊ฐ„์ด๋‹ค.

    10๋ณด๋‹ค ์•„๋ž˜๋ฉด 0์„ ๋ถ™์ด๊ณ  ์•„๋‹ˆ๋ฉด ๊ทธ๋ƒฅ ๊ทธ๋Œ€๋กœ๋ผ๋Š” 3ํ•ญ์—ฐ์‚ฐ์ž๋‹ค.

    ์ด๋ ‡๊ฒŒ ์›”๊ณผ ์ผ๋„ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

     

     

    ๋Œ“๊ธ€

Posted by Bejerry.