谈谈JS的时间对象(二)–Date对象中的方法

探索Date对象的秘密

上一篇文章介绍了关于new Date()中传递参数的各种形式。无论传递的参数是什么形式,new Date()的返回值都是一个对象,这个对象我们叫它为Date对象

其实new Date()的作用是初始化Date对象,关于对象的解释这里不做详细的介绍,只要知道对象本身一般不能处理数据,只有对象中的方法才能针对具体业务中的具体数据做特别的处理。

下面的一张图说明了对象与对象下面的方法的关系。
对象具象图

理论

Date对象中的具体方法主要可以分为两大类:

  • 一类是设置时间的方法(这里我暂且把它叫做set时间方法)

  • 一类是获取时间的方法(这里我暂且把它叫做get时间方法)。

而这两类中的方法又分操作本地时间和UTC时间两种。

具体的方法有:

1.get本地时间方法

方法作用
getFullYear()通过Date对象获取四位数字表示的年份
getMonth()通过Date对象获取一年中第几个月份,取值是0-11
getDate()通过Date对象获取一个月中的某一天,取值是1-31
getDay()通过初始化的Date对象获取一周中的第几天,取值是0(周日)- 6(周六)
getHours()通过初始化的Date对象获取小时数,取值是0-23
getMinutes()通过初始化的Date对象获取分钟数,取值是0-59
getSeconds()通过初始化的Date对象获取秒数,取值是0-59
getMilliseconds()通过初始化的Date对象获取毫秒数,取值是0-999
getTime()获取从1970年1月1日到通过初始化Date对象的毫秒数

2.get UTC时间方法

方法作用
getUTCFullYear()通过Date对象获取四位数字表示的年份(UTC时间)
getUTCMonth()通过Date对象获取一年中第几个月份,取值是0-11(UTC时间)
getUTCDate()通过Date对象获取一个月中的某一天,取值是1-31(UTC时间)
getUTCDay()通过初始化的Date对象获取一周中的第几天,取值是0(周日)-6(周六) (UTC时间)
getUTCHours()通过初始化的Date对象获取小时数,取值是0-23(UTC时间)
getUTCMinutes()通过初始化的Date对象获取分钟数,取值是0-59(UTC时间)
getUTCSeconds()通过初始化的Date对象获取秒数,取值是0-59(UTC时间)
getUTCMilliseconds()通过初始化的Date对象获取毫秒数,取值是0-999(UTC时间)
getUTCTime()获取从1970年1月1日到通过初始化Date对象的毫秒数(UTC时间)

3.set本地时间方法

方法作用
setFullYear(yyyy)通过Date对象设置四位数字表示的年份yyyy
setMonth(mm)通过Date对象设置一年中第几个月份mm
setDate(dd)通过Date对象设置一个月中的某一天dd
setHours(hh)通过初始化的Date对象设置小时数hh
setMinutes(mm)通过初始化的Date对象设置分钟数mm
setSeconds(ss)通过初始化的Date对象设置秒数ss
setMilliseconds(ms)通过初始化的Date对象设置毫秒数ms
setTime(ms)设置从1970年1月1日到通过初始化Date对象的毫秒数ms

4.set UTC时间方法

方法作用
setUTCFullYear(yyyy)通过Date对象设置四位数字表示的年份yyyy(设置UTC时间)
setUTCMonth(mm)通过Date对象设置一年中第几个月份mm(设置UTC时间)
setUTCDate(dd)通过Date对象设置一个月中的某一天dd(设置UTC时间)
setUTCHours(hh)通过初始化的Date对象设置小时数hh(设置UTC时间)
setUTCMinutes(mm)通过初始化的Date对象设置分钟数mm(设置UTC时间)
setUTCSeconds(ss)通过初始化的Date对象设置秒数ss(设置UTC时间)
setUTCMilliseconds(ms)通过初始化的Date对象设置毫秒数ms(设置UTC时间)
setUTCTime(ms)设置从1970年1月1日到通过初始化Date对象的毫秒数ms(设置UTC时间)

附注

  • get、set UTC时间的方法和get、set本地方法是相似的,只不过其时间表示时的相对时区不一样而已,关于UTC时间的介绍会在下一篇文章列出

  • set时间的方法中的参数类型是整数类型。其中的参数没有大小的限制。比如:setMonth(mm)方法,可能你认为mm的大小会限制在0-11之间,其实不然,据验证,当其参数超过了11时,比如D.setMonth(12),该方法就会将D时间对象存储的年份进位1个单位,这有些像二进制、八进制、十进制中的逢二进一、逢八进一、逢十进一一样的道理。

  • set时间的方法中没有setDay()和setUTCDay()(可能是因为在现实中应用不大,也没有意义吧,毕竟一周就7天,要设置用setDate()或setUTCDate()代替就好啦)。另外,get时间的方法中没有getUTCTime(),因为getTime()方法是获取1970年1月1日到当前时间的毫秒数,它是一个相对值,所以就算有getUTCTime()方法,它也是和getTime()返回相同的值

  • 注意Date对象中的方法是用于处理时间日期的,是相对人类定义的某种方式(比如UTC时间)来显示的时间,而非用于换算,这一点博主本人刚开始接触JS的时候就经常傻傻分不清楚的。
    比如:3605h→通过getSeconds()的运算后→5s
    其计算经过是: ss=3605(h)%3600(s/h)=5s,而非 ss=3600(s/h)*3605(h) 这种计算


实例

1.将当前时间按”yyyy/mm/dd hh:min:ss”的形式

var D = new Date();   //获取当前时间的时间对象
var yyyy = D.getFullYear();  //获取四位数字表示的年份

/*获取月份,
+1是因为getMonth方法返回的0(一月份)-11(十二月份)*/
var mm = D.getMonth()+1;  

var dd = D.getDate();     //获取日期
var hh = D.getHours();    //获取小时数
var min = D.getMinutes();   //获取分钟数
var ss = D.getSeconds();    //获取秒
 //分隔符
var sep1 = "/";  
var sep2 = ":";
//用"0"补位不足两位数的时间
mm = (mm<10)?("0"+mm):mm;

dd = (dd<10)?("0"+dd):dd;

hh = (hh<10)?("0"+hh):hh;

min = (min<10)?("0"+min):min;

ss = (ss<10)?("0"+ss):ss;

var format = yyyy+sep1+mm+sep1+dd+" "+hh+sep2+min+sep2+ss;  
//就在我这里此时的时间是:2017/06/03 11:37:01 

2.45天之后的日期是多少

var D = new Date();   //获取今天的时间对象
var dd = D.getDate();  //获取今天是几号
var d45 = dd+45;      //加45天
D.setDate(d45); //此时D对象已经被设置成了45天之后的时间对象
/**
       此处再写上上例中获取时间的方法
       即可得到相应格式的日期字符串 
**/
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值