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

    使用了JavaScript这么久了,还没有好好整理过,现在开始整理一下知识,巩固一下。

    先从Date对象开始。

    Date对象用于处理时间,既然是一个对象,我们就可以使用new这个关键词来得到这个对象,然后就可以使用Date对象本身所提供的方法。得到Date对象可以使用如下的方法

        1,var objDate=new Date();//Date 对象自动使用当前的日期和时间作为其初始值。

        2,  var objDate=new Date(dateVal); //将给定的毫秒数转换为使用的时间

        3,  var objDate=new Date((yearmonthdate[hours[minutes[seconds[,ms]]]]));//指定具体的日期

        较常用的是第一种方式和第三种方式。

        下面来看一下上面所使用到的参数     

           dateVal

                 必选项。如果是数字值,dateVal 表示指定日期与 1970 年 1 月 1 日午夜间全球标准时间 的毫秒数。如果是字符串,则 dateVal 按照 parse 方法中的规则进行解析。dateVal 参数也可以是从某些ActiveX(R) 对象返回的 VT_DATE 值。

            year

                 必选项。完整的年份,比如,1976(而不是 76)。

            month

                 必选项。表示的月份,是从 0 到 11 之间的整数( 1 月至 12 月)。

            date

                 必选项。表示日期,是从 1 到 31 之间的整数。

            hours

                  可选项。 如果提供了 minutes 则必须给出。表示小时,是从 0 到 23 的整数(午夜到 11pm)。

           minutes

                  可选项。 如果提供了 seconds 则必须给出。表示分钟,是从 0 到 59 的整数。

           seconds

                  可选项。 如果提供了 milliseconds 则必须给出。表示秒钟,是从 0 到 59 的整数。

            ms

                   可选项。 表示毫秒,是从 0 到 999 的整数。

    已经获得了时间的对象,我们就可以使用这个对象,例如

    var date=new Date();
    document.write(date);

    上面代码得到是本机的时间,时间的现实为 Mon Mar 09 2015 15:43:04 GMT+0800 (中国标准时间),很明显这样的显示格式不是我们想要的,所以我们就要用到Date这个对象的方法,来制定自己的时间显示格式。

    然而Date这个对象提供了很多的方法,常用的得到时间方法也就getYear(),getFullYear(),getMonth(),getDate(),getDay(),getHours(),getMinutes(),getSeconds(),getTime()这么几个,下面简单介绍下这几个方法

    getYear() 返回Date对象中本地的年份,这个方法已经过时,之所以提供这个方法,是为了保持向后的兼容性。请改用 getFullYear 方法。对于1900-1999这段时间而言,返回的年份值是一个两位数字的整数,它代表了所保存的年份与 1900 年之间的差距。而对于其它的年份,返回值是一个四位的整数。例如,1996 年的返回值是 96,而 1825和 2025 年的返回值则相应地为 1825 和 2025。

    注意 对于 JScript 1.0 版,getYear 返回的值始终为 Date 对象中的年份与 1900 年之间的差距。例如,1899 年的返回值是 -1, 而 2000 年的返回值是 100。 

    var date = new Date();
    document.write(date.getYear());

    显示的结果是115,而不是我们所期待的2015

    getFullYear()  要获取用全球标准时间 (UTC)表示的年份值,请使用 getUTCFullYear 方法。getFullYear 方法以绝对数字的形式返回年份值。例如,1976 年的返回值就是1976。这样可以避免出现 2000 年问 题,从而不会将 2000 年1月1日以后的日期与 1900 年1月1日以后的日期混淆起来。

    var date = new Date();
    document.write(date.getFullYear());

    显示的结果就是我们所期待的2015

    getMonth() 得到本地时间表中的月份值,getMonth方法返回一个处于 0 到 11 之间的整数,它代表 Date 对象中的月份值。这个整数并不等于按照惯例来表示月份的数字,而是要比按惯例表示的值小 1。如果一 个 Date 对象中保存的时间值是 "Jan 5, 2015 08:47:00",那么 getMonth()方法就会返回 0。

     var date = new Date();
       document.write(date.getMonth() + "</br>");
       document.write(date.getUTCMonth() + "</br>");
       var setDate = new Date("Jan 5, 2015 08:47:00");
       document.write(setDate.getMonth() + "</br>");
    View Code

    上面的例子的显示的结果是2  2  0,所以要显示正确的月份要相应的加 1

    getDate()  获取当前时间月份中的几号,返回值是一个处于 1 到 31 之间的整数,它代表了相应的 Date 对象中的日期值。

    var date = new Date();
    document.write(date.getDate()+ "</br>");

    运行的结果是 9

    getDay() 表示当前时间日期中的周几,getDay方法所返回的值是一个处于 0 到 6 之间的整数,它代表了一周中的某一天

    getDay()返回值
    对应的星期值

    返回值 对应值
    0 星期日
    1 星期一
    2 星期二
    3 星期三
    4 星期四
    5 星期五
    6 星期六

    getHours() 方法返回一个处于 0 到 23 之间的整数,这个值表示从午夜开始计算的小时数。在下面两种情况下此方法的返回值是 0:时间在 1:00:00 am 之前,或者在创建 Date 对象的时候没有将时间保存在该对 象中。而要确定究竟是哪种情况,唯一的方法就是进一步检查分钟和秒钟值是否也是 0。如果这两个值都是 0,那就几乎可以确定是没有将时间值保存到 Date 对象中。

    getMinutes() 方法返回一个处于 0 到 59 之间的整数,返回值就等于保存在 Date 对象中的分钟值。在下面两种情况下返回值为 0:在时钟整点之后经过的时间少于一分钟,或者是在创建 Date 对象的时候没有将时间值保存到该对象中。而要确定究竟是哪种情况,唯一的方法是同时检查小时和秒钟值是否也是 0。如果这两个值都是 0,那就几乎可以确定是没有将时间值保存到该 Date 对象中。

    getSeconds()  方法返回一个处于 0 到 59 之间的整数,它表示了相应的 Date 对象中的秒钟值。在下面两种情况下,返回值为 0。第一种情况是在当前的一分钟中所经过的时间少于一秒。另外一种情况是在创建 Date 对象时没有将时间值保存到该对象中。而为了确定究竟属于哪种情况,唯一的方法是同时检查小时和分钟值是否也都是 0。如果这两个值都是 0,那就几乎可以确定是没有将时间值保存到 Date 对象中。

    getTime()    方法返回一个整数值,这个整数代表了从 1970 年 1 月 1 日开始计算到 Date 对象中的时间之间的毫秒数。日期的范围大约是 1970 年 1 月 1 日午夜的前后各 285,616 年。负数代表 1970 年之前的日期。

    至于设置时间,我们可以使用 Date 对象提供的各种set方法,但是最简单的则是在 new 对象的时候我们就可以初始化时间,例如:

               var date = new Date("2016");
                document.write(date.getFullYear()+ "</br>");
                var setDate = new Date();
                setDate.setFullYear(2016);
                document.write(setDate.getFullYear() + "</br>");

    得到的结果都是相同的,都是2016,只是写入的数据不同,new Date()填写的是字符串setFullYear()则是相应的整数。

    下面给个结合数组显示当前日期的时钟

    复制代码

    复制代码

     function showNowDate()
            {
                var date = new Date();
                var year = date.getFullYear();
                var month = date.getMonth();
                var day = date.getDate();
                var isMonth = new Array("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月");
                var isDay = new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
                document.write("今天日期是:"+year+"年"+isMonth[month]+day+"日"+" "+isDay[date.getDay()]);
            }

    复制代码

    复制代码

    显示当前具体时间的时钟

    复制代码

    复制代码

    function showTimeMethod()
    {
    var date = new Date();
    var hour = date.getHours();
    var minuts = date.getMinutes();
    var seconds = date.getSeconds();
    document.getElementById("showTime").value = hour + ":" + minuts + ":" + seconds;
    setTimeout("showTimeMethod()",100);
    }

    复制代码

  • 相关阅读:
    PAT (Advanced Level) Practice 1129 Recommendation System (标记+排序)
    PAT (Advanced Level) Practice 1135 Is It A Red-Black Tree (30分) (红黑树知识+建树+判断)
    PAT (Advanced Level) Practice 1134 Vertex Cover (25分) (存边+标记点!!)
    PAT (Advanced Level) Practice 1133 Splitting A Linked List (25分) (静态链表的遍历)
    PAT (Advanced Level) Practice 1139 First Contact (30分) (unordered_map用来标记+哈希)
    PAT (Advanced Level) Practice 1132 Cut Integer (20分) (atoi、stoi区别、stringstream使用)
    PAT (Advanced Level) Practice 1138 Postorder Traversal (25分) (不键树、法一找规律法二先序中序变后序)
    区间DP学习 LibreOJ-10147 石子合并
    2020 Nowcoder Training
    UVA1347 Tour 动态规划
  • 原文地址:https://www.cnblogs.com/yuanking/p/4330712.html
Copyright © 2011-2022 走看看