美文网首页
JS标准库系列(五)—— Date对象

JS标准库系列(五)—— Date对象

作者: 周花花啊 | 来源:发表于2017-02-11 16:03 被阅读0次

    一、Date作为工具函数


    Date对象是JS提供的日期和时间的操作接口。
    Date对象作为工具函数直接使用,不管有没有参数,都是返回当前时间的字符串

    作为工具函数返回

    二、new Date()


    Date还可以当作构造函数使用,返回一个Date对象的实例,如果不加参数,生成的就是代表当前时间的对象。

    var today = new Date();
    

    这个Date实例对应的字符串值,就是当前时间。

    作为构造函数使用

    同时作为构造函数,里面还可以接受多种形式的参数。

    [ 注 ]:北京时间,又名中国标准时间CST),是中国大陆的标准时间,比世界协调时快八小时(即UTC+8),或者是比格林威治时间快八小时(即GMT+8),因为格林威治时间(GMT)和世界协调时间(UTC)处于同个时区。

    2.1、new Date(milliseconds)

    将你要得到的那个日期转化成毫秒数,时间是从1970年1月1日00:00:00 UTC开始计算的。

    // 将1970年1月2日的 零时 转为时间对象
    //注意,这里是零时,那东八区就会+8
    var Jan02_1970 = new Date( 24* 60 * 60 * 1000);
    // Fri Jan 02 1970 08:00:00 GMT+0800(中国标准时间)
    
    // 将1969年12月31日的零时转为时间对象
    var Dec31_1969 = new Date(- 24 * 60 * 60 * 1000);
    // Wed Dec 31 1969 08:00:00 GMT+0800(中国标准时间)
    

    上面最后一个例子说明,Date构造函数的参数可以是一个负数,表示1970年1月1日之前的时间。

    2.2、new Date(datestring)

    Date对象还接受一个日期字符串作为参数,返回所对应的时间。

    new Date('Jan 2, 2017');
    // Mon Jan 02 2017 00:00:00 GMT+0800 (中国标准时间)
    

    对于YYYY-MM-DD形式的字符串,JavaScript引擎可能会将其当作ISO格式来解析,采用格林尼治时区作为计时标准;而对于其他格式的日期字符串,一律视为非ISO格式,采用本地时区作为计时标准。

    输入字符串格式影响计时标准
    2.3、new Date(year, month [, date, hours, minutes, seconds, ms])

    Date对象还可以接受多个整数作为参数,依次表示年、月、日、小时、分钟、秒和毫秒。如果采用这种格式,最少需要提供两个参数(年和月),其他参数都是可选的。

    注意:月份从0开始计算,日期date默认为1,其它默认为0。

    多个整数作为参数

    三、日期的运算


    类型转换时,Date对象的实例如果转为数值,则等于对应的毫秒数;
    如果转为字符串,则等于对应的日期字符串。

    日期的计算

    所以,两个日期对象进行减法运算,返回的就是它们间隔的毫秒数;进行加法运算,返回的就是连接后的两个字符串。

    四、Date对象的静态方法


    4.1、Date.now() [ 当前时间是CST时间,会转成GMT时间计算 ]

    Date.now方法返回当前时间的UTC时间距离1970年1月1日 00:00:00 UTC的毫秒数。

    返回当前时间距离UTC的毫秒数

    这个当前是个什么时间?
    假设我电脑现在显示2017年1月2日 11:15:00 CST这是东八区时间,那要先转化为UTC时间 -82017年1月2日 03:15:00 UTC然后计算这个时间距离1970年1月1日 00:00:00 UTC的毫秒数。

    验证
    4.2、Date.parse() [ 参数是CST或GMT,是CST则转成GMT时间计算 ]

    Date.parse方法用来解析日期字符串,返回距离1970年1月1日 00:00:00 UTC的毫秒数。

    解析日期字符串

    如果解析失败,返回NaN。

    参数的区别
    4.3、Date.UTC() [ 参数是GMT无需转换 ]

    该方法接受年、月、日等变量作为参数,参数就是UTC时间,返回距离1970年1月1日 00:00:00 UTC的毫秒数。

    返回UTC时间

    现在发现有点懵B,这些个方法,参数,时区,得到的结果让人摸不着头脑,甚是玄乎啊,不知道怎么记忆。

    三者的区别比较

    五、Date实例对象的方法


    Date的实例对象,有几十个自己的方法,分为以下三类。

    • to类:从Date对象返回一个字符串,表示指定的时间。
    • get类:获取Date对象的日期和时间。
    • set类:设置Date对象的日期和时间。
    5.1、to类方法

    toString:返回当前时区的完整日期字符串;
    toUTCString:返回返回对应的UTC时间完整日期字符串;
    toDateString:返回日期字符串;
    toTimeString:返回时间字符串;
    toLocaleTimeString:返回一个字符串,代表时间的当地写法。

    常见的to类方法
    5.2、get类方法

    Date对象提供了一系列get*方法,用来获取实例对象某个方面的值。

    getFullYear: 获取实例的四位年份;
    getMonth:获取月份(0表1月,11表12月);
    getDate:获取几号;
    getDay:获取星期(0为星期日,1为星期一);
    getHours:返回小时;
    getMinutes:返回分钟;
    getSeconds:返回秒;
    getMilliseconds:返回毫秒;
    getTime():返回距离1970年1月1日00:00:00的毫秒数,相当于valueOf();

    get*方法
    5.3、set类方法

    Date对象提供了一系列set*方法,用来设置实例对象的各个方面。

    setFullYear:设置实例的四位年份;
    setMonth:设置月份;
    setDate:设置日子;
    setHours:设置小时;
    setMinutes:设置分钟;
    setSeconds:设置秒;
    setMilliseconds:设置毫秒;
    setTime:设置毫秒时间戳;

    set*方法

    (本系列下一节为 — Math对象)

    相关文章

      网友评论

          本文标题:JS标准库系列(五)—— Date对象

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