JavaScript内置对象--Date类型详解
2017-02-03 15:44
816 查看
一、Date类型基本介绍
ECMAScript中的Date类型是在早期Java中的java.util.Date类基础上构建的。为此,Date类型使用自UTC(Coordinated Universal Time,国际协调时间) 1970年1月1日午夜(零时)开始经过的毫秒数来保存日期。在使用这种数据存储格式的条件下,Date类型保存的日期能够精确到1970年1月1日之前或之后的100000000年,在JS中,Date类型是JS内置对象的其中一种,封装了一个日期,并提供对日期执行的API,今后只要保存或者操作日期都要用Date对象二、如何创建
1.获得客户端当前的系统时间:var now = new Date(); //2017年2月3日14:53:32
2.创建日期对象保存自定义时间
var date1 = new Date("yyyy/MM/dd hh:mm:ss"); //如: 2004-05-25 00:00:00
var date2 = new Date("月/日/年"); //如: 6/13/2004
var date3 = new Date("英文月名/日/年"); //如: January 12,2004
var date4 = new Date("英文星期几英文月名日 年 时 : 分 : 秒 时区"); //如Tue May 25 2004 00:00:00 GMT-0700
3.复制一个日期
为什么: 日期的计算都直接修改原日期对象,旧时间无法保存
何时: 如果需要同时保存计算前后的两个时间时,就必须将原日期复制一个副本再计算。
如何: var date1 = new Date(); var date2=new Date(date1) date1是原始时间, date2是复制了date1的时间
4. 直接用毫秒数创建日期对象:
var date=new Date(ms)
原理: Date对象中保存的是1970年1月1日0点至今的毫秒数
三、日期的单位及范围
年FullYear (无范围)月Month (0~11, 0开始,没有12)
日Date (1~31, 和现实生活一样)
星期Day (0~6, 0是星期日,没有7)
时Hours (0~23. 0开始,没有24)
分Minutes (0~59)
秒Seconds (0~59)
毫秒MilliSeconds
四、getXXX/setXXX方法
每个单位都有一对儿getXXX/setXXX方法getXXX()方法负责读取指定分量的值:
比如: date.getDate(); //获得几号
setXXX(n) 方法负责修改指定分量的值:
比如: date.setDate(10); //修改date的日期为10号
特例: Day没有set方法,因为星期只读,不可改
五、日期计算(含一个小例子)
日期计算就是两个日期时间的相加减,获得毫秒差步骤分为三步:
1. 取分量: var n=date.getXXX();
2. 做加减: n+=?;
3. 放回去; date.setXXX(n);
特点:
1. 自动调整进制
2. 直接修改原日期对象
简化版: date.setXXX(date.getXXX()+n)
一段小程序:
某公司员工入职时间为2012/6/30 ,入职后签订合同时间为3年, 3年后需要重新签订劳动合同,签订合同的时间是3年后的前一个月,且必须是工作日(周一到周五), 如果3年后的前一个月是周六,则提前一天签订合同,如果是周日,则提前两天签订合同,3年后的前一个月签订合同的之前必须提前一周(7天)提醒员工,以防出差等情况。
代码如下:
//定义入职时间hiredate: 2012/6/30 var hiredate=new Date("2012/6/30"); //复制入职时间为到期时间enddate var enddate=new Date(hiredate); //将enddate+3年 enddate.setFullYear(enddate.getFullYear()+3); //复制到期时间为续签时间renewdate var renewdate=new Date(enddate); //将renewdate-1月 renewdate.setMonth(renewdate.getMonth()-1); //如果renewdate是周六: if(renewdate.getDay()==6){ //renewdate-1天 renewdate.setDate(renewdate.getDate()-1); }else if(renewdate.getDay()==0){ //否则,如果renewdate是周日: //renewdate-2天 renewdate.setDate(renewdate.getDate()-2); } //复制续签时间为提醒时间alertdate var alertdate=new Date(renewdate); //将alertdate-7天 alertdate.setDate(alertdate.getDate()-7); console.log("到期时间"+enddate); console.log("续签时间"+renewdate); console.log("提醒时间"+alertdate);执行结果如下:
这段小例子很经典,和我们工作息息相关,需要注意的几个地方:
1.在做日期计算的时候必须先复制一个日期,因为日期计算会直接修改原始日期对象
2.getXXX方法可以获取日期单位的任一一个分量值
3.日期计算得到的结果是毫秒值,经过sexXXX方法后会自动调整进制,不需要手动调整
六、转换字符串
.toString() -> 转为中国标准时间(+8区).toLocaleString() -> 转为系统当前时间格式
.toLocaleDateString -> 转为系统当前时间格式
.toLocaleTimeString -> 转为系统当前时间格式,仅包含时间部分
.toGMTString() -> 转为国际标准时间(0时区)
最后,需要讲的是,Date类型还有一些零零碎碎的API没有讲,但是个人认为,以上的东西足够在开发中使用了,需要深入学习的可以自己去学,谢谢~~
相关文章推荐
- JavaScript-1-3:Date类型、基本包装类型、内置对象
- JavaScript内置对象--Error类型详解
- JavaScript内置对象--基本包装类型(Boolean、Number、String)详解
- MySQL的datetime类型在web端生成javascript的Date对象
- JavaScript内置对象,Date String Array等,以及这些对象操作。
- 详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
- javaScript 内置对象五 (Date)
- double类型日期转换为Javascript Date对象
- JavaScript原生对象属性和方法详解——Date对象
- Javascript中Date类型和Math类型详解
- javascript内置对象操作详解
- JavaScript原生对象之Date对象的属性和方法详解
- JavaScript高级程序设计之引用类型之单体内置对象之Math对象第5.7.2讲笔记
- 学习笔记 JavaScript内置对象详解
- javascript(重要内置对象,json处理,闭包详解)高级特性详解
- javascript中的函数及内置对象详解
- javascript内置对象arguments详解
- JavaScript高级程序设计之引用类型之单体内置对象之Global对象第5.7.1讲笔记
- JavaScript对象类型详解
- javascript内置对象Date以及(面试题--打印当前的日期,格式为yyyy-mm-dd hh:mm:ss