zoukankan      html  css  js  c++  java
  • Date对象

    Date对象是JS原生对象,既可以作为构造函数,也可以作为工具函数;

    日期的零点是(0时区): 1970年1月1日 00:00:00

    1. 基础知识

    如果作为构造函数, 如果不传参数,返回当前时间的对象,是一个对象。

    如果传参,返回指定时间(当前时区的时间)的对象。

    var date = new Date();//Sat Oct 12 2019 23:51:42 GMT+0800 (中国标准时间)
    var date = new Date(2000,10,20); //Mon Nov 20 2000 00:00:00 GMT+0800 (中国标准时间)

    如果作为工具函数,返回当前时间的字符串。不论有没有参数都是返回当前时间。

    Date() === new Date().toString(); //true 
    Date(2000,20,11) === new Date().toString() // true

    2. 构造函数

    1. 实例对象

     通过构造函数生成的日期实例,使用时会自动调用toString()方法

    2. 传参格式

    1) 一个整数(正数/负数都可以),表示当前时区的时间距离1970.1.1的毫秒数

    new Date(0); //Thu Jan 01 1970 08:00:00 GMT+0800 (中国标准时间)
    // 返回的是距离当前时区的零点时间的毫秒数,即1970-1-1 08:00:00
    new Date(0).toUTCString(); // 返回距离UTC时区0ms的时间
    // "Thu, 01 Jan 1970 00:00:00 GMT"
    new Date(0).toISOString(); // 时间同UTC,但是格式是 ISO8601写法
    // "1970-01-01T00:00:00.000Z"
    new Date(0).toJSON(); // 和ISOString()方法完全相同
    // "1970-01-01T00:00:00.000Z"
    // 还可以是负数,代表1970-1-1之前的时间
    new Date(-1000); // Thu Jan 01 1970 07:59:59 GMT+0800 (中国标准时间)
    new Date(-1000).toJSON(); // "1969-12-31T23:59:59.000Z"

    2)一个日期字符串,只要是能被Date.parse()解析的都可以

    new Date('2019-09-09'); // Mon Sep 09 2019 08:00:00 GMT+0800 (中国标准时间)

    3) 多个整数(正数),分别代表年、月、日、时、分、秒、毫秒

    其中年、月不能省略,其他都可以省略。即至少是两个参数,否则,用(1)的规则。

    new Date(2000,0,1,0,0,0,0) //Sat Jan 01 2000 00:00:00 GMT+0800 (中国标准时间)
    new Date(10,0,1,0,0,0,0) // Sat Jan 01 1910 00:00:00 GMT+0800 (中国标准时间)
    new Date(0,0,1,0,0,0,0) // Mon Jan 01 1900 00:00:00 GMT+0805 (中国标准时间)
    new Date(-1,0,1,0,0,0,0) // Fri Jan 01 -0001 00:00:00 GMT+0805 (中国标准时间)
    new Date(100,0,1,0,0,0,0) //Fri Jan 01 0100 00:00:00 GMT+0805 (中国标准时间)

    参考上面示例:

    年: 可以是四位,代表年份;三位代表0000+,两位或者一位代表1900+,负数代表公元前

    月:0-11分别代表 1-12月份。 超出范围,可以换算成第二年或者前一年的月份

    日:1-31。超出换算。

    时:0-23。

    分: 0-59。

    秒:0-59。

    毫秒: 0-999。

    3. 静态方法

    全部返回的都是毫秒数。

    1. Date.now()

    现在距离1970的毫秒数,它的逆运算可以是new Date(Date.now())

    2. Date.parse(str)

    指定的时间字符串(字符串要符合YYYY-MM-DD HH:MM:SS的格式)对应的时间距离时间零点的毫秒数。

    解析失败,返回NaN

    UTC时间;逆运算是new Date(num).toJSON()

    Date.parse('1970-01-02'); //86400000 

    3. Date.UTC(year,month[,date,hour,minute,second,miliseconds])

    多个参数。参数用法和Date构造函数的多参数一致。

    返回参数指定的时间距离时间零点的毫秒数

    UTC时间;逆运算是new Date(num).toJSON()

    Date.UTC(1970,0,2); //86400000 相当于1970-01-02

    4.  实例方法

    1. valueOf()

    当日期对象参与‘-’运算时,自动调用valueOf()方法,返回对应的毫秒数

    结果和getTime()相同。

    2. to方法--日期对象调用,没有参数,返回字符串

    1.toString()--当前时区时间

    2.toUTCString()--UTC时间

    3.toISOString()--ISO时间格式,UTC时间

    4.toJSON()---同3

    5.toDateString()--返回日期字符串

    6.toLocaleDateString()--返回日期当地写法的字符串

    7.toTimeString()--返回时间字符串

    8.toLocaleTimeString()--返回时间当地写法的字符串

    3. get方法--没有参数,返回整数,当前时区时间

    1.getYear()---距离1900年的年数; // 119

    2.getFullYear()--返回四位年位; //2019

    3.getMonth()--返回0-11,代表1-12月; // 9; 代表的是10月份

    4.getDate()--返回1-31,代表1-31号; // 12; 代表12号

    5.getHours()--返回0-23; // 23;代表23点

    6.getMinutes()--返回0-599

    7.getSeconds()--返回0-59

    8.getMilliseconds() -- 返回0-999

    9.getDay()--返回0-6,代表星期天-星期六; // 1 星期二

    10.getTime() --返回毫秒数

    11.getTimezoneOffset()--返回时区差异的分钟数 //( 0时区-当前时区)*60

    其中2-9提供了相应的UTC方法,返回UTC时间

    如: getUTCDay()

    4. set方法--传参,返回毫秒数

    除了getDay(),getTimezoneOffset()没有对应的set方法,其他都有

    • setDate(date):设置实例对象对应的每个月的几号(1-31),返回改变后毫秒时间戳。
    • setYear(year): 设置距离1900年的年数。
    • setFullYear(year [, month, date]):设置四位年份。
    • setHours(hour [, min, sec, ms]):设置小时(0-23)。
    • setMilliseconds():设置毫秒(0-999)。
    • setMinutes(min [, sec, ms]):设置分钟(0-59)。
    • setMonth(month [, date]):设置月份(0-11)。
    • setSeconds(sec [, ms]):设置秒(0-59)。
    • setTime(milliseconds):设置毫秒时间戳

    除了setTime()和setYear()都有对应的UTC的set方法。

    5. 应用

    计算相对时间

    var date = new Date();
    // 将时间设为6个小时后
    date.setHours(date.getHours() + 6);
  • 相关阅读:
    coding
    我的大学
    《活出生命的意义》读后感
    《世界是数字的》读后感
    学习进度表
    阅读《我是一只IT小小鸟有感》
    《软件工程师职业规范》心得
    软件工程第二次结对作业
    软件工程第三次作业
    软件工程第二次作业
  • 原文地址:https://www.cnblogs.com/lyraLee/p/11665387.html
Copyright © 2011-2022 走看看