博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js内置对象之Date
阅读量:5111 次
发布时间:2019-06-13

本文共 3199 字,大约阅读时间需要 10 分钟。

js内置对象之Date

  Date对象:封装一个时间点,提供操作时间的API。Date对象中封装的是从1970年1月1日0点至今的毫秒数。

 

1、创建Date对象(4种)

  (1)创建Date对象同时获得当前系统时间,指的是客户端系统的当前时间

var now = new Date();

  (2)创建日期对象,同时自定义时间,形如:Date("yyyy/MM/dd[ hh:mm:ss]")

var date = new Date("1994/04/06 03:23:55");

  (3)创建日期对ixnag,同时自定义时间:由于计算机中日期MM从0开始计算,范围是0~11,使用时MM需要加1

var date = new Date(yyyy, MM, dd, hh, mm, ss);

  (4)复制一个对象

var oldDate = new Date("1994/04/06");var newDate = new Date(oldDate.getTime());//参数可以是一个日期,也可以是一个毫秒数

 

 

2、日期API

  日期分量:FullYear、Month、Date、Day、Hours、Minutes、Seconds、Milliseconds

  2.1 每个分量都有一对get和set方法

    getXXX()用于获取指定分量的值;setXXX()用于设置指定分量的值,可以自动调整时间进制。Day分量没有set方法,因为星期是根据日期换算出来的。

  2.2 分量命名规律

    年月日星期,后没有s,直接是英文;时分秒毫秒,后有s

  2.3 取值范围

    只有月中的日date分量是从1开始到31结束;其余都是从0开始,到进制最大量-1结束

getXXX() setXXX() 意义 范围 备注
date.getFullYear() date.setFullYear()    
date.getMonth() date.setMonth() 0~11

使用时get方法

获得的值需要+1

date.getDate() date.setDate() 1~31  
date.getDay() 星期 0~6  
date.getHours() date.setHours() 0~23  
date.getMinutes() date.setMinutes() 0~59  
date.getSeconds() date.setSeconds() 0~59  
date.getMilliseconds() date.setMilliseconds() 毫秒    

 

3、计算日期(2种)

   1)求时间差:

    日期-日期=毫秒差

    日期-毫秒数=毫秒数

  由于每个月的天数不一样,故此方法一般用于一个月之内的时间差计算。

  2)对日期的任意分量做计算:3布

    ①取分量:使用对应的get方法

    ②计算

    ③设置分量:使用对应的set方法

    简写:date.setXXX(date.getXXX()+n);

    set方法是直接修改原日期。

 

4、日期转字符串

  1) String(date):返回中国标准时间格式的字符串

  2)date.toLocaleString():返回客户端当地时间格式,包含日期和时间。

  3)date.toLocaleDateString():返回客户端当地时间格式,只包含日期部分

  4)date.toLocaleTimeString():返回客户端当地时间格式,仅包含时间部分

不足:①方法名太长,不利于记忆;②兼容性问题,不同浏览器输出的效果不一样

 

5、练习

  5.1 计算合同到期时间等

  要求:①创建Date对象保存员工入职日期;②合同有效期为3年,计算合同到期时间;③合同到期前,需要提前一个月续签。如果提前一月的续签时间刚好是周末,则需要提前到上一个周五,计算续签时间;④要求在续签时间前一周,向员工发出续签提醒,计算提醒时间。

//入职时间var hireDate = new Date("2012/6/30");//赋值对象给endDatevar endDate = new Date(hireDate.getTime());endDate.setFullYear(endDate.getFullYear()+3);//var resumeDate = new Date(endDate.getTime());resumeDate.setMonth(resumeDate.getMonth()-1);if(resumeDate.getDay()==6){    resumeDate.setDate(resumeDate.getDate()-1);}if(resumeDate.getDay()==0){    resumeDate.setDate(resumeDate.getDate()-2);}var alertDate = new Date(resumeDate.getTime());alertDate.setDate(alertDate.getDate()-7);console.log("到期时间:"+endDate.toLocaleDateString());console.log("续签时间:"+resumeDate.toLocaleDateString());console.log("提醒时间:"+alertDate.toLocaleDateString());

 

  5.2 计算明天开始,任意工作日之后的日期

var now = new Date();var days = 10;for(var i=0;i

 

  5.3 自定义format方法,格式化日期

//返回形如“2017年3月2日 星期四 上午 11:12:31”function format (date){    var days = ["星期日","星期一","星期二","星期三","星期四","星期五","星期6"];    //获取date的年份    var year = date.getFullYear();    //获取date的月份,将月份格式化成两位数保存    var month = date.getMonth()<10 ? "0"+date.getMonth() : date.getMonth();    //获取date的日期,将日期格式化成两位数保存    var d = date.getDate()<10 ? "0"+date.getDate() : date.getDate();    //从days数组中获得date的星期对应位置的星期名    var day = days[date.getDay()];    //获得date的小时,保存为两位数    var hour = date.getHours();    var am = hour<12 ? "上午" : "下午";    hour = hour<12 ? hour : hour-12;    var minute = date.getMinutes();    var second = date.getSeconds();    return year+"年"+month+"月"+d+"日 "+day+" "+am+" "+hour+":"+minute+":"+second;}console.log(format(new Date()));

 

转载于:https://www.cnblogs.com/chenmengyu/p/6479319.html

你可能感兴趣的文章
关于TFS2010使用常见问题
查看>>
poj2752 Seek the Name, Seek the Fame
查看>>
程序员的数学
查看>>
聚合与组合
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
ionic2+ 基础
查看>>
Screening technology proved cost effective deal
查看>>
Thrift Expected protocol id ffffff82 but got 0
查看>>
【2.2】创建博客文章模型
查看>>
从零开始系列之vue全家桶(1)安装前期准备nodejs+cnpm+webpack+vue-cli+vue-router
查看>>
Jsp抓取页面内容
查看>>
大三上学期软件工程作业之点餐系统(网页版)的一些心得
查看>>
可选参数的函数还可以这样设计!
查看>>
[你必须知道的.NET]第二十一回:认识全面的null
查看>>
Java语言概述
查看>>
关于BOM知识的整理
查看>>
使用word发布博客
查看>>
面向对象的小demo
查看>>
微服务之初了解(一)
查看>>
GDOI DAY1游记
查看>>