美文网首页
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