原生js 日历日期

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
* {padding: 0;margin: 0;}
.calendar {width: 420px;height: 400px;position: fixed;top: 100px;left: 200px;background: #fff;border: 1px solid rgba(0, 0, 0, 0.1);}
.times {width: 100%;height: 40px;line-height: 40px;font-size: 16px;text-align: center;color: #6ac13c;}
.body-list ul {width: 100%;font-family: arial;font-weight: bold;font-size: 14px;}
.body-list ul li {list-style-type: none;display: block;box-sizing: border-box;float: left;text-align: center;}
.lightgrey ul li {width: 60px;height: 36px;line-height: 36px;}
.darkgrey ul li {width: 56px;height: 32px;line-height: 32px;padding-left: 1px;padding-top: 1px;margin: 2px;border: 1px solid transparent;cursor: pointer;}
.lightgrey {color: #a8a8a8;}
.darkgrey {color: #565656;}
.green {color: #6ac13c;text-align: center;}
.darkgrey ul li:hover,.greenbox {border: 1px solid #6ac13c;background: #e9f8df;}
#prev,#next {width: 30px;height: 30px;line-height: 30px;text-align: center;position: absolute;top: 65px;color: #6ac13c;font-size: 30px;cursor: pointer;}
#prev {left: 10px;}
#next {right: 10px;}
.footer {position: absolute;bottom: 0;left: 0;width: 100%;height: 40px;}
.footer #button1 {float: right;width: 60px;height: 25px;line-height: 25px;text-align: center;border: 1px solid #6ac13c;cursor: pointer;font-size: 12px;margin-right: 40px;}
.footer #button1:hover {background: #6ac13c;color: #fff;}
</style>
</head>
<body>
    <div class="calendar">
        <div class="times"></div>
        <div class="title">
            <h1 class="green" id="caletitle">Month</h1>
            <h2 class="green small" id="caleyear">Year</h2>
        </div>
        <p href="" id="prev"></p>
        <p href="" id="next"></p>
        <div>
            <div class="lightgrey body-list">
                <ul>
                    <li>MON</li>
                    <li>TUE</li>
                    <li>WED</li>
                    <li>THU</li>
                    <li>FRI</li>
                    <li>SAT</li>
                    <li>SUN</li>
                </ul>
            </div>
            <div class="darkgrey body-list">
                <ul id="days">
                </ul>
            </div>
        </div>
        <div class="footer">
            <p id="button1">此刻</p>
        </div>
    </div>
    <script>
        var month_olympic = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        var month_normal = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        var month_name = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
        var holder = document.getElementById("days")
        var ctitle = document.getElementById("caletitle")
        var cyear = document.getElementById("caleyear")
        var prev = document.getElementById("prev")
        var next = document.getElementById("next")
        var my_date = new Date()
        var my_year = my_date.getFullYear()
        var my_month = my_date.getMonth()
        var my_day = my_date.getDate()
        //获取某年某月第一天是星期几
        function dayStart(month, year) {
            var tmpDate = new Date(year, month, 1)
            return (tmpDate.getDay())
        }
        //计算某年是不是闰年,通过求年份除以4的余数即可
        function daysMonth(month, year) {
            var tmp = year % 4
            if (tmp == 0) {
                return (month_olympic[month])
            } else {
                return (month_normal[month])
            }
        }
        //处理日期
        function refreshDate() {
            var str = ""
            var totalDay = daysMonth(my_month, my_year)//获取该月总天数
            var firstDay = dayStart(my_month, my_year)//获取该月第一天是星期几
            var myclass
            for (var i = 1; i < firstDay; i++) {
                str += "<li></li>" //为起始日之前的日期创建空白节点
            }
            for (var i = 1; i <= totalDay; i++) {
                if ((i < my_day && my_year == my_date.getFullYear() && my_month == my_date.getMonth()) || my_year < my_date.getFullYear() || (my_year == my_date.getFullYear() && my_month < my_date.getMonth())) {
                    myclass = " class='lightgrey'" //当该日期在今天之前时,以浅灰色字体显示
                } else if (i == my_day && my_year == my_date.getFullYear() && my_month == my_date.getMonth()) {
                    myclass = " class='green greenbox'" //当天日期以绿色背景突出显示
                } else {
                    myclass = " class='darkgrey'" //当该日期在今天之后时,以深灰字体显示
                }
                str += "<li" + myclass + ">" + i + "</li>" //创建日期节点
            }
            holder.innerHTML = str //设置日期显示
            ctitle.innerHTML = month_name[my_month] //设置英文月份显示
            cyear.innerHTML = my_year //设置年份显示
        }
        refreshDate() //执行该函数
        //向前
        prev.onclick = function (e) {
            e.preventDefault()
            my_month--
            if (my_month < 0) {
                my_year--
                my_month = 11
            }
            refreshDate()
        }
        //向后
        next.onclick = function (e) {
            e.preventDefault()
            my_month++
            if (my_month > 11) {
                my_year++
                my_month = 0
            }
            refreshDate()
        }
        //滚动动画
        windowAddMouseWheel()
        function windowAddMouseWheel() {
            var scrollFunc = function (e) {
                e = e || window.event
                if (e.wheelDelta) {  //判断浏览器IE,谷歌滑轮事件
                    if (e.wheelDelta > 0) { //当滑轮向上滚动时
                        e.preventDefault()
                        my_month--
                        if (my_month < 0) {
                            my_year--
                            my_month = 11
                        }
                        refreshDate()
                    }
                    if (e.wheelDelta < 0) { //当滑轮向下滚动时
                        e.preventDefault()
                        my_month++
                        if (my_month > 11) {
                            my_year++
                            my_month = 0
                        }
                        refreshDate()
                    }
                } else if (e.detail) {  //Firefox滑轮事件
                    if (e.detail > 0) { //当滑轮向上滚动时
                        e.preventDefault()
                        my_month--
                        if (my_month < 0) {
                            my_year--
                            my_month = 11
                        }
                        refreshDate()
                    }
                    if (e.detail < 0) { //当滑轮向下滚动时
                        e.preventDefault()
                        my_month++
                        if (my_month > 11) {
                            my_year++
                            my_month = 0
                        }
                        refreshDate()
                    }
                }
            }
            //给页面绑定滑轮滚动事件
            if (document.addEventListener) {
                document.addEventListener('DOMMouseScroll', scrollFunc, false)
            }
            //滚动滑轮触发scrollFunc方法
            window.onmousewheel = document.onmousewheel = scrollFunc
        }
        //调用时间,实时刷新
        setInterval(function () {
            newTime()
        }, 1000)
        //获取到时间的方法
        function newTime() {
            var mydate = new Date()//获取到系统时间
            var weekday = [" 星期日", " 星期一", " 星期二", "星期三", "星期四", "星期五", "星期六"]
            var week = mydate.getDay()//星期
            var Myyear = mydate.getFullYear()//
            var Mymonth = mydate.getMonth() + 1//月
            var Mydate = mydate.getDate()//
            var Myhours = mydate.getHours()//小时
            var Myminute = mydate.getMinutes()//
            var Mysecond = mydate.getSeconds()//
            //定义符号
            var fuhao1 = "-"
            var fuhao2 = ":"
            //为小于0的时间前加上0
            if (Mymonth >= 0 && Mymonth <= 9) {
                Mymonth = "0" + Mymonth
            }
            if (Mydate >= 0 && Mydate <= 9) {
                Mydate = "0" + Mydate
            }
            if (Myhours >= 0 && Myhours <= 9) {
                Myhours = "0" + Myhours
            }
            if (Myminute >= 0 && Myminute <= 9) {
                Myminute = "0" + Myminute
            }
            if (Mysecond >= 0 && Mysecond <= 9) {
                Mysecond = "0" + Mysecond
            }
            //时间的格式
            var time = Myyear + fuhao1 + Mymonth + fuhao1 + Mydate + "\t" +
                Myhours + fuhao2 + Myminute + fuhao2 + Mysecond + "\t" + weekday[week]
            //输出时间
            document.getElementsByClassName('times')[0].innerHTML = time
        }
        //点击此刻
        var button1 = document.getElementById("button1")
        button1.onclick = function () {
            my_year = my_date.getFullYear()
            my_month = my_date.getMonth()
            my_day = my_date.getDate()
            refreshDate()
        }
    </script>
</body>
</html>
发布了17 篇原创文章 · 获赞 0 · 访问量 197

猜你喜欢

转载自blog.csdn.net/who_become_gods/article/details/104498217