[모던 JavaScript] 5.11 과제 정리!

    SMALL
    • 5.11 Date 객체와 날짜

    5.11(1) 날짜 생성하기

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>날짜 생성하기</title>
    </head>
    <body>
        <script>
            let date = new Date(2012, 1, 20, 3, 12);
            // 월은 0부터 시작 => 2월: 1 넣음
            alert(date);
    
            let d2 = new Date("February 20, 2012 03:12:00");
            alert(d2)
        </script>
    </body>
    </html>

    5.11(2) 요일 보여주기

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>요일 보여주기</title>
    </head>
    <body>
        <script>
            // getDay 사용
            function getWeekDay(date) {
                let days = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'];
    
                return days[date.getDay()];
            }
    
            let date = new Date(2012, 0, 3);  // 2012년 1월 3일
            alert( getWeekDay(date) );
        </script>
    </body>
    </html>

    5.11(3) 유럽 기준 달력

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>유럽 기준 달력</title>
    </head>
    <body>
        <script>
            function getLocalDay(date){
                let day = date.getDay();
    
                if(day == 0) {
                    day = 7
                }
    
                return day;
            }
    
            let date = new Date(2019, 11, 5);  // 2019년 11월 5일
            alert( getLocalDay(date) ); 
        </script>
    </body>
    </html>

    5.11(4) n일 전 '일' 출력하기

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>n일 전 '일' 출력하기</title>
    </head>
    <body>
        <script>
            /*data 변경 X! 복사본 필요*/
            function getDateAgo(date, days) {
                let dateCopy = new Date(date);
                dateCopy.setDate(date.getDate() - days);
                return dateCopy.getDate(); /*이 부분 빼먹음..*/
            }
    
            let date = new Date(2015, 0, 2); // 2015년 1월 2일
    
            alert( getDateAgo(date, 1) ); // 1, (2015년 1월 1일)
            alert( getDateAgo(date, 2) ); // 31, (2014년 12월 31일)
            alert( getDateAgo(date, 365) ); // 2, (2014년 1월 2일)
        </script>
    </body>
    </html>

    5.11(5) 달의 마지막 일

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>달의 마지막 일</title>
    </head>
    <body>
        <script>
            function getLastDayOfMonth(year, month) {
                let date = new Date (year, month+1 , 0);
                return date.getDate();
            }
    
            alert( getLastDayOfMonth(2012, 0) ); // 31
            alert( getLastDayOfMonth(2012, 1) ); // 29
            alert( getLastDayOfMonth(2013, 1) ); // 28
        </script>
    </body>
    </html>

    5.11(6) 몇 초나 지났을까요?

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>달의 마지막 일</title>
    </head>
    <body>
        <script>
            function getLastDayOfMonth(year, month) {
                let date = new Date (year, month+1 , 0);
                return date.getDate();
            }
    
            alert( getLastDayOfMonth(2012, 0) ); // 31
            alert( getLastDayOfMonth(2012, 1) ); // 29
            alert( getLastDayOfMonth(2013, 1) ); // 28
        </script>
    </body>
    </html>

    5.11(7)  몇 초나 남았을까요?

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>몇 초나 남았을까요?</title>
    </head>
    <body>
        <script>
            function getSecondsToTomorrow() {
                let now = new Date();
    
                let tomorrow = new Date(now.getFullYear(), now.getMonth(), now.getDate()+1);
    
                let diff = tomorrow - now;
                return Math.round (diff/1000); // 밀리세컨드라서 초로 바꾸기 위한 작업 
            }
    
           alert(getSecondsToTomorrow())
        </script>
    </body>
    </html>

    5.11 (8) 상대 날짜 출력하기

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>상대 날짜 출력하기</title>
    </head>
    <body>
        <script>
            function formatDate (date) {
                let diff = new Date() - date;
                if (diff < 1000) {
                    return '현재';
                }
                
                let sec = Math.floor (diff / 1000);
    
                if (sec < 60) {
                    return sec + '초 전';
                }
    
                let min = Math.floor (diff / 60000);
                if (min < 60) {
                    return min + '분 전';
                }
    
                let d = date;
                d = [
                    '0'+d.getDate(),
                    '0'+(d.getMonth()+1),
                    '0'+d.getFullYear(),
                    '0'+d.getHours(),
                    '0'+d.getMinutes()
                ].map(component => component.slice(-2)) // 뒤에서부터 2개
    
                return d.slice(0, 3).join('.') + ' ' + d.slice(3).join(':');
            }
            
            alert( formatDate(new Date(new Date - 1)) ); // "현재"
    
            alert( formatDate(new Date(new Date - 30 * 1000)) ); // "30초 전"
    
            alert( formatDate(new Date(new Date - 5 * 60 * 1000)) ); // "5분 전"
    
            // 어제를 나타내는 날짜를 "일.월.연 시:분" 포맷으로 출력
            alert( formatDate(new Date(new Date - 86400 * 1000)) );
        </script>
    </body>
    </html>
    728x90

    댓글