1、获取当前日期
var date = new Date();在新的es6语法里,提供了Date.now()方法,用于返回一个数字,该数字是从1970年1月1日到现在的毫秒数。
1 2 3 4 5 |
console.log(Date.now()); 1503567577336 var date = new Date(); console.log(date); Thu Aug 24 2017 17:39:55 GMT+0800 (中国标准时间) |
2、创建具体的某一天
var date = new Date(year,month,day);
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//逐个传入的方式 new Date(2006,0,12,22,19,35); //注意,月份是从0开始 new Date(2006,0,12); //注意,月份是从0开始 new Date(1137075575000); //按字符串传入的方式 dt = new Date('2014/12/25'); // yyyy/MM/dd dt = new Date('2014/12/25 12:00:00'); // yyyy/MM/dd HH:mm:ss dt = new Date('2014-2-25'); // yyyy-MM-dd,小于10的0可以不用补齐 dt = new Date('2014-12-25 12:00:00'); // yyyy-MM-dd HH:mm:ss (注意:此转换方式在IE中会报错!) //以上统一输出如下内容 Thu Dec 25 2014 12:00:00 GMT+0800 (中国标准时间) var dt = new Date('2014-2-25 25:00:00');//当输入日期不合法时,会报日期不合法Invalid Date |
3、实例方法
3.1:get方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
getFullYear()//返回Date对象的年份值;4位年份 getMonth()//返回Date对象的月份值 从0开始,所以真实月份=返回值+1 getDate()//返回Date对象的月份中的日期值;值的范围1~31 getHours()//返回Date对象的小时值。 getMinutes()//返回Date对象的分钟值。 getSeconds()//返回Date对象的秒数值。 getMilliseconds()//返回Date对象的毫秒值。 getDay()//返回Date对象的一周中的星期值;0为星期天,1为星期一、2为星期二,依此类推 getTime()//返回Date对象与'1970/01/01 00:00:00'之间的毫秒值(北京时间的时区为东8区,起点时间实际为:'1970/01/01 08:00:00') 。 |
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
var dt = new Date(); console.log(dt.getFullYear()); // =>年 console.log(dt.getMonth()); // => 月;实际为12月份(月份从0开始计算) console.log(dt.getDate()); // =>日 console.log(dt.getHours()); // => 时 console.log(dt.getMinutes()); // => 分 console.log(dt.getSeconds()); // => 秒 console.log(dt.getMilliseconds()); // =>毫秒 console.log(dt.getDay()); // => 星期几的值 console.log(dt.getTime()); // => 1419492640333 :返回Date对象与'1970/01/01 00:00:00'之间的毫秒值(北京时间的时区为东8区,起点时间实际为:'1970/01/01 08:00:00') 结果如下 2017 8 11 16 44 27 30 1 1505119467030 |
3.2: set方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var dt = new Date(); dt.setFullYear(year, opt_month, opt_date)//设置Date对象的年份值;4位年份。 dt.setMonth(month, opt_date)//设置Date对象的月份值。0表示1月,11表示12月。 dt.setDate(date) //设置Date对象的月份中的日期值;值的范围1~31 。 dt.setHours(hour, opt_min, opt_sec, opt_msec)//设置Date对象的小时值。 dt.setMinutes(min, opt_sec, opt_msec)//设置Date对象的分钟值。 dt.setSeconds(sec, opt_msec)//设置Date对象的秒数值。 dt.setMilliseconds(msec)//设置Date对象的毫秒值。 |
4、其他技巧
1、获取某一个月有多少天
new Date(year, month, 0).getDate();//传入年份和月份,这里的月份从1开始,不是从0开始。
2、两个判断日期的正则(只用于匹配年月日),功能非常强大,例如,当你用以下正则去匹配‘2017-02-29’,结果为false,因为2017年的2月只有28天。
“-”分割的形式,小于10的必须0补齐:/^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/
“/”分割的形式,小于10的必须0补齐:”^(?:(?!0000)[0-9]{4}/(?:(?:0[1-9]|1[0-2])/(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])/(?:29|30)|(?:0[13578]|1[02])/31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)/02/29)$”
使用方法如下,如果你想在小于10的时候没有用0补齐也能匹配正确,就用注释掉正则。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function isDate(str){ var dateTest; if (this.options.cutStyle == '-'){ dateTest = new RegExp(/^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/); //dateTest = new RegExp(/^(?:(?!0000)[0-9]{4}-(?:(?:0?[1-9]|1[0-2])-(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])-(?:29|30)|(?:0?[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-0?2-29)$/); } if (this.options.cutStyle == '/'){ dateTest = new RegExp("^(?:(?!0000)[0-9]{4}/(?:(?:0[1-9]|1[0-2])/(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])/(?:29|30)|(?:0[13578]|1[02])/31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)/02/29)$"); //dateTest = new RegExp("^(?:(?!0000)[0-9]{4}/(?:(?:0?[1-9]|1[0-2])/(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])/(?:29|30)|(?:0?[13578]|1[02])/31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)/0?2/29)$"); } return dateTest.test(str); } var dt = '2017-02-19'; console.log(isDate(dt)); |
5、Date函数实战:来一个自己封装的日期插件,可添加日程和查看日程,删除日程(只针对当前月),支持上一月、下一月、返回本月切换。可获取上一月,下一月,上一年,下一年等信息。截图如下。
git地址:https://github.com/veznlee/simplePlugin/tree/master/lgxdate
发表评论