JavaScript引用类型——Date类型

作者: 胖胖冰 | 来源:发表于2017-05-23 09:57 被阅读27次

    Date类型

    Date类型使用自UTC(Coordinated Universal Time,国际协调时间) 1970年1月1日午夜(零食)开始经过的毫秒数来保存日期。在使用这种数据存储格式的条件下,Date类型保存的日期能够精确到1970年1月1日之前或之后的100000000年。
    要创建一个日期对象,使用new操作符和Date构造函数即可。如:

    var now = new Date();
    

    在调用Date()构造函数而不传递参数的情况下,新创建的对象自动获得当前日期和时间。如果想根据特定的日期和时间创建日期对象,必须传入表示该日期的毫秒数(即从UTC时间1980年1月1日午夜起至改日期经过的毫秒数)。为了简化这一计算过程,ECMAScript提供了两个方法:Date.parse()Date.UTC()

    • Date.parse()方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日期的毫秒数。ECMA-262没有定义Date.parse()应该支持哪种日期格式,因此这个方法的行为因实现而异,而且通常是因地区而异。如:
    • "月/日/年",如6/14/2014;
    • "英文月名 日,年",如January 12,2013;
    • "英文星期几 英文月名 日 年 时:分:秒 时区",如 Tue May 25 2012 00:00:00 GMT-0700。
    • ISO 8601 扩展格式 YYYY-MM-DDTHH:mm:ss.sssZ(例如 2012-03-12T00:00:00)只有兼容ECMAScript5的实现支持这种格式。

    例如,为2004年5月24日创建一个日期对象,可以使用下面的代码:

    var someDate = new Date(Date.parse("May 25, 2004"));
    

    如果传入Date.parse()方法的字符串不能表示日期,它会返回NaN。实际上,直接将表示日期的字符串传递给Date构造函数,也会在后台调用Date.parse()。

    var someDate = new Date("May 25, 2004");
    
    • Date.UTC()方法也同样返回表示时期的毫秒数,但它与Date.parse()在构建值时使用不同的信息。Date.UTC()的参数分别是年份、基于0的月份(一月是0,二月是1,以此类推)、月中的哪一天(1到31),小时数(0到23)、分钟、秒以及毫秒数。在这些参数中,只有前两个参数(年和月)是必须的。如果没有提供月中的天数,则假设天数为1;如果省略其它参数,则统统假设为0。如:
    //GMT 时间 2000年 1月 1日 午夜零时
    var y2k = new Date(Date.UTC(2000,0));
    //GMT 时间 2005年 5月 5日 下午5:55:55
    var allFives = new Date(Date.UTC(2005, 4, 5, 17, 55, 55));
    

    如同模仿Date.parse()一样,Date构造函数也会模仿Date.UTC(),但有一点明显不同:日期和时间都是基于本地时间而非GMT来创建。不过,Date构造函数接收的参数仍然与Date.UTC()相同。

    //本地时间 2000年 1月 1日 午夜零时
    var y2k = new Date(2000,0);
    //本地时间 2005年 5月 5日 下午5:55:55
    var allFives = new Date(2005, 4, 5, 17, 55, 55);
    
    • ECMAScrit5添加了Date.now()方法,表示调用这个方法时的日期和时间的毫秒数
    //取得开始时间
    var start = Date.now();
    //调用函数
    doSomething();
    //取得停止时间
    var stop = new Date(),
        result = stop - start;
    

    在不支持Date.now()方法的浏览器,使用+操作符获取Date对象的时间戳,也可以达到同样的目的。

    //取得开始时间
    var start = Date.now();
    //调用函数
    doSomething();
    //取得停止时间
    var stop = +new Date(),
        result = stop - start;
    
    • 1. 继承的方法
      与其他引用类型一样,Date类型也重写了toLocalString()、toString()和valueOf()方法。但这些方法的返回值与其他方法中的不同。
      Date类型的toLocalString()方法会按照于浏览器设置的地区相适应的格式返回日期和时间。toString()方法通常放回带有时区信息的日期和时间。valueOf()方法不返回字符串,返回日期的毫秒表示。可以方便使用比较操作符来比较日期值。
    var date1 = new Date(2007,0,1);
    var date2 = new Date(2007,1,1);
    alert(date1<date2); //true
    alert(date1>date2); //false
    
    • 2. 日期格式化方法
      Date类型还有以下专门用于将日期格式化为字符串的方法,如:
    • toDateString()——以特定与实现的格式显示星期几、月、日和年
    • toTimeString()——以特定与实现的格式显示时、分、秒和时区

    • toLocaleDateString()——以特定与地区的格式显示星期几、月、日和年

    • toLocaleTimeString()———以特定与实现的格式显示时、分、秒

    • toUTCString()——以特定与实现的格式完整的UTC日期

    • 3. 日期/时间组件方法
      直接取得和设置日期值中特定部分的方法。UTC日期值得是在没有时区偏差的情况下(将日期转换为GMT时间)的日期值。

    • getTime():返回表示日期的毫秒数;与valueOf方法返回的值相同
    • setTime(毫米):以毫秒数设置日期,会改变整个日期
    • getFullYear():取得4位数的年份(如2007而非07)
    • getUTCfFullYear():返回UTC日期的4位数年份
    • setFullYear(年):设置日期的年份。传入的年分值必需是4位数字(如2007而非07)
      -setUTCFullYear(年):设置UTC日期的年份。传入的年分值必需是4位数字(如2007而非07)
    • getMonth():放回日期中的月份,0表示一月,11表示十二月
    • getUTCMonth():回UTC日期中的月份,0表示一月,11表示十二月
    • setMonth(月):设置日期的月份,传入的月份值必需大于0,超过11则增加年份
    • setUTCMonth(月):设置UTC日期的月份,传入的月份值必需大于0,超过11则增加年份
    • getDate():返回日期月份中的天数(1到31)
    • getUTCDate():返回UTC日期月份中的天数(1到31)
    • setDate(日):设置日期月份中的天数,如果传入的值超过了该月中应该有的天数,则增加月份
    • setUTCDate(日):设置UTC日期月份中的天数,如果传入的值超过了该月中应该有的天数,则增加月份
    • getDay():返回日期中星期的星期几(0表示星期日,6表示星期六)
    • getUTCDay():返回UTC日期中星期的星期几(0表示星期日,6表示星期六)
    • getHours():返回日期中的小时数(0到23)
    • getUTCHours():返回UTC日期中的小时数(0到23)
    • setHours(时):设置日期中的小时数。传入的值超过23则增加日期的天数
    • setUTCHours(时):设置UTC日期中的小时数。传入的值超过23则增加日期的天数
    • getMinutes():返回日期中的分钟数。(0到59)
    • getUTCMinutes():返回UTC日期中的分钟数。(0到59)
    • setMinutes(分):设置日期中的分钟数。传入的值超过59增加小时数
    • setUTCMinutes(分):设置UTC日期中的分钟数。传入的值超过59增加小时数
    • getSeconds():返回日期中的秒数(0到59)
    • getUTCSeconds():返回UTC日期中的秒数(0到59)
    • setSeconds(秒):设置日期中的秒数。传入的值超过59增加分钟数
    • setUTCSeconds(秒):设置UTC日期中的秒数。传入的值超过59增加分钟数
    • getMilliseconds() : 返回日期的毫秒数
    • getUTCMilliseconde():返回UTC日期的毫秒数
    • setMilliseconds(秒):设置日期的毫秒数
    • setUTCMilliseconds(秒):设置UTC日期的毫秒数
    • getTimezoneOffset():返回本地时间与UTC时间相差的分钟数。

    相关文章

      网友评论

        本文标题:JavaScript引用类型——Date类型

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