js中Date对象

在js中,Date对象用来处理日期和时间。可以达到获取当前日期和时间的目的。也可以达到存储日期时间,计算日期和时间的目的。
Date对象包含大量的方法和应用。首先介绍一些简单的方法和应用:
1.创建Date对象
创建Date对象一共有四中方法。
第一种方法如下:
var mydate = new Date();

此语句的运行结果是当前pc机的日期和时间,即把当前时间设置为了初始值。
注意大小写的问题。
创建Date对象的第二种方法:
var mydate1 = new Date(949278000000);

Mon Jan 31 2000 08:20:00 GMT+0800 (CST),这个是此语句的执行结果,即日期是GMT2000年1月31日的午夜后20分钟。
该语句中949278000000,的含义是从GMT1970年1月1日00:00:00开始所经过的毫秒数。显而易见,第二种方法有多麻烦。所以一般不采用第二种方法来创建时间。
创建对象的第三种方法:
var mydate2 = new Date( ‘1 January 2017’)

执行结果是:2017年1月1日。其中January可以简写成:Jan;另外1,January,2017的月和日可以随意调换位置。最好月份用英文名称来表示从而避免识别错误造成的混乱。
第四种方法是:
var mydate3 = new Date(2017,0,1,1,1,1,1,1);

运行结果是:2017年1月1日1时1分1秒1毫秒。
如果把时间忽略的话也可以只定义日期部分。
另外一月是用数字0来表示的。而十二月是用数字11来表示的。
2.Date对象的属性
Date对象包括两种属性:
constructor属性 返回对创建此对象的 Date 函数的引用。
prototype属性 使您有能力向对象添加属性和方法。
3.Date对象的方法
Date对象有很多种方法。其中比较简单的方法或者说基本的方法有:
getDate()     返回值是:月份中的第几天;
getDay()      返回值是:表示星期几的整数,其中0表示星期日,1表示星期1,以此类推;
getMonth()   返回值是:表示月份的整数,其中0表示的是1月,其它的以此类推;
getFullYear() 返回值是:以4位数表示的年份;
toDateString()返回值是:基于当前时区,返回一个人们便于阅读的完整日期字符串;
以上这些基本语句是用来获得时间的。那么想要设置时间如何来做呢?
setDate()    返回值是:月中的某一天作为参数并传入,用来设置日期;
setMonth()   返回值是:年中的某一月作为整数参数传入,0代表1月,1代表2月,以此类推;
setFullYear() 返回值是:把年份设置为作为参数传入的4位整数。
这些是比较基本的来设置Date的方法。set与get方法相对应,不过一个用来获取,一个用来设置日期值而已。
需要注意的是:在基于web的js是不能修改用户计算机上的日期和时间的。
var myDate=new Date();
myDate.setFullYear(2000);
myDate.setDate(27);
myDate.setMonth(2);
console.log(myDate);

输出结果是:Mon Mar 27 2000 08:59:41 GMT+0800 (CST);
但是需要注意的是:set方法并没有getDay()相对应的方法。因为当确定年月日之后,会自动确定设置星期几。
4.Date对象的计算
例如:
 var myDate = new Date('1 Jan 2017');
myDate.setDate(33);
console.log(myDate);

此句的执行结果是:Thu Feb 02 2017 00:00:00 GMT+0800 (CST)
当初次看到这里的时候,会有一些疑惑。为什么月中的日可以设置成33?但是1月并没有33号。当有执行结果之后或许会明白一点。setDate()中的数字,是原Date的日子加上33天。也就是2017年1月1号之后的33天。所以日期就变成了2017年2月2号。

当然此类的方法也可以成功应用在setMonth()上面。
前面是一个小小的坑:
如果要把日期设置成今天后的第33天,按照上述的方法代码应该如下:
 var myDate = new Date();
myDate.setDate(33);
console.log(myDate);

但是它的执行结果是:Sun Apr 02 2017 09:27:40 GMT+0800 (CST)(我现在的时间是2017年3月20号上午九点二十七分四十秒),很奇怪,为什么不是4月22号呢?
var myDate = new Date();
var currentDay=myDate.getDate();
myDate.setDate(currentDay+33);
console.log(myDate);

如果把代码改成这样,就可以达到想要的目的。这是因为在使用setDate()的时候,如果传入的值大于当月的天数,就会从当月的第一天算起往后计算天数。所以第一个代码的执行结果是四月2号而不是四月22号。如果想要计算当天之后的多少天,最好按照第二种写法,这样可以避免一些错误。 当然这一点在setMonth()中也是要注意的。
如果想要获取当前日期的前多少天。myDate.setDate(currentDay+33)需要把加号改成减号在写上天数就可以了。不过一般为负值。
5.获得时间值
其实时间的获取和日期的获取有相同的地方。
getHours();
getMinutes();
getSeconds();
getMilliseconds();
toTimeString();

上述的方法分别获取的是:时,分,秒,毫秒,整个时间。时间的制式是二十四小时的。
需要注意的是:有一个格式化的问题:
在使用
getMinutes();
getseconds();

在使用这两个的时候,如果时间是10点1分的话。在网页上应该显示的是:10:01;
但是实际使用获取方法时得到的却是:10:1;怎么把这个格式进行统一呢?
var nowDate = new Date();
var nowMinute = nowDate.getMinutes();
var nowSecond = nowDate.getSeconds();
if(nowMinute < 10){
   nowMinute = '0' + nowMinute;
}
if(nowSecond < 10){
    nowSecond = '0' + nowSecond;
}

这样以来就能把整个时间的格式进行统一了。
6.设置时间的值
setHours();
setMinutes();
setSeconds();
setMilliseconds();

设置时间的时候与设置日期的方法是类似的。同样,设置日期需要注意的,在设置时间是、时同样需要注意。当你为一个时间的分钟数设置成66,它会自动使时间加1,分钟数为:66-60;如果设置的小时数为:23,分钟数为:61的话,就会自动滚向下一天的零点,分钟数为61-60.
7.获取世界时间
toUTCString();
toLocaleString();

根据UTC或者本地时间把Date对象中保存的日期和时间返回为一个字符串。
对于时间而言有:
toLocaleTimeString();
toLocaleDatestring();

分别是获取当地时间和获取当地的日期时间。
另外如果计算本地时间和UTC时间的差值,可以使用以下语句:
getTimezoneOffset()

当然对于某些国家和某些地区而言,会有夏令时这个神奇的东西存在。




























猜你喜欢

转载自soyomo.iteye.com/blog/2364047