美文网首页
Date时间对象

Date时间对象

作者: 学的会的前端 | 来源:发表于2019-02-19 13:14 被阅读0次

    Date对象是JavaScript提供的日期和时间的操作接口。

    JavaScript的时间是由世界标准时间(UTC)1970年1月1日开始,用毫秒计时,一天由86,400,000毫秒组成。Date对象的范围是-100,000,000天至100,000,000天(等效的毫秒值)。

    关于Date,一般使用的是moment.js库。

    Date的静态方法

    • Date.now():返回当前距离1970年1月1日00:00:00的毫秒数。


      TIM图片20190219100123.png
    • Date.parse():用来解析日期字符串,返回距离1970年1月1日00:00:00的毫秒数。如果解析失败,返回NaN。


      TIM图片20190219100526.png
    • Date.UTC():返回的是UTC的时间。该方法介绍呀年、月、日等变量作为参数,返回距离1970年1月1日00:00:00的毫秒数。
      默认情况下,Date对象返回的都是当前时区的时间。
      UTC:世界统一时,标准时。


      TIM图片20190219101157.png

    Date()的动态方法

    • Date():Date()函数可以直接调用,返回一个但钱日期和时间的字符串,这时候是否有参数结果一样。


      TIM图片20190219101504.png
    • new Date():使用Date()构造函数创建一个实例。实例时间为当前时间。


      TIM图片20190219101612.png
    • get方法:
      var d = new Date()
        d.getTime()         //返回实例对象距离1970年1月1日00:00:00对应的毫秒数
        d.getDate()         //返回实例对象对应每个月的几号(从1开始)
        d.getDay()          //返回星期,星期日为0,星期一为1,以此类推
        d.getFullYear()     //返回四位的年份
        d.getMonth()        //返回月份(0表示1月,11表示12月)
        d.getHours()        //返回小时(0~23)
        d.getMilliseconds() //返回毫秒(0-999)
        d.getMinutes()      //返回分钟(0-59)
        d.getSeconds()      //返回秒(0-59)
    
    TIM图片20190219102743.png
    • set方法
    Date.prototype.setDate(date):设置实例对象对应的每个月的几号(1-31),返回改变后毫秒时间戳
    Date.prototype.setFullYear(year [, month, date]):设置四位年份
    Date.prototype.setHours(hour [, min, sec, ms]):设置小时(0-23)
    Date.prototype.setMilliseconds():设置毫秒(0-999)
    Date.prototype.setMinutes(min [, sec, ms]):设置分钟(0-59)
    Date.prototype.setMonth(month [, date]):设置月份(0-11)
    Date.prototype.setSeconds(sec [, ms]):设置秒(0-59)
    Date.prototype.setTime(milliseconds):设置毫秒时间戳
    
    • Date.toString():返回一个完整的时间字符串
    var d = new Date()
    console.log(d.toString())
    
    TIM图片20190219103125.png
    • toLocaleString():展示现在的时间,当前地区的时间表示


      TIM图片20190219123005.png

      toLocaleString是由浏览器操作系统决定的,不是由JS决定的。它是不可靠的。

    • 时间戳:当前时间距离1970年1月1号00:00:00的时间距离就是时间戳。时间戳是绝对的,与地区无关。UTC时间才是标准时间。
    • 可以表示1970年1月1号0:00:00之前的时间,因为时间戳可以是负值。


      TIM图片20190219123510.png

    实例:

    • 写一个函数getChIntv,获取从当前时间到指定日期的间隔时间。
        function getChIntv(datestr){
            var targetDate = new Date(datestr)//得到了目标时间的时间对象
            var curDate = new Date()//得到了当前时间的时间对象
            var offset = Math.abs(targetDate - curDate)//防止得到的结果为一个负值
            var totalSeconds = Math.floor(offset/1000)
            var second = totalSeconds%60
            var totalMinutes = Math.floor((offset/1000)/60)
            var minutes = totalMinutes%60
            var totalHours = Math.floor(totalMinutes/60)
            var hours = totalHours%24
            var totalDays = Math.floor(totalHours/24)
            return totalDays + '天' + hours + '小时' + minutes + '分钟' + second + '秒'
        }
    
    • 写一个函数,判断是否是闰年
    判断二月是否有29号,有就是闰年,无就不是。
        function xx(){
            new d = new Date(year,1,29)
            return d.getDate() === 29
    
        }
    
    • 把hh-mm-dd格式数字日期改成中文日期
        function getChsDate(date){
            var result = [];
            var str = ['零','一','二','三','四','五','六','七','八','九','十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','二一','二二','二三','二四','二五','二六','二七','二八','二九','三十','三一'];
            var arr = date.splite('-');
            var yrar = arr[0];
                month = arr[1];
                day = arr[2];
            year = year.splite('').map(function (value){
                return strs[+value];
            }).join('');
            month = strs[+month];
            day = strs[+day];
            return year + '年' + month + '月' + day + '日';
    
        }
    
    • 写一个函数,参数为时间对象毫秒数的字符串格式,返回值为字符串。假设参数为时间对象毫秒数t,根据t的时间分别返回如下字符串:

    刚刚( t 距当前时间不到1分钟时间间隔)
    3分钟前 (t距当前时间大于等于1分钟,小于1小时)
    8小时前 (t 距离当前时间大于等于1小时,小于24小时)
    3天前 (t 距离当前时间大于等于24小时,小于30天)
    2个月前 (t 距离当前时间大于等于30天小于12个月)
    8年前 (t 距离当前时间大于等于12个月)

        function friendlyDate(date){
            var offset = +new Date - time;
            var seconds = 1000,
                minutes = seconds * 60,
                hours = minutes * 60,
                days = hours * 24,
                months = days * 30,
                years = months * 12;
            var t;
            if(offset >= years){
                t = parseInt(offset / years);
                return t + '年前';
            }
            else if(offset >= months){
                t = parseInt(offset / months);
                return t + '个月前';
            }
            else if(offset >= days){
                t = parseInt(offset / days);
                return t + '天前';
            }
            else if(offset >= hours){
                t = parseInt(offset / hours);
                return t + '小时前';
            }
            else if(offset >= minutes){
                t = parseInt(offset / minutes);
                return t + '分钟前';
            }
            else(offset >= seconds){
                return '刚刚';
            }
        }
    
    

    参考文献

    MDN Date的使用方法

    相关文章

      网友评论

          本文标题:Date时间对象

          本文链接:https://www.haomeiwen.com/subject/cfcxyqtx.html