javascript中神奇的 Date对象小结


Posted in Javascript onOctober 12, 2017

Date 对象算是较常用的对象之一,但很多人完全不会操作,就算一些简单的操作也用 moment 而不自己尝试一下。

本次分享下 Date 中的 date 使用技巧,希望能给大家启发。

MDN官网介绍

setDate() 方法根据本地时间来指定一个日期对象的天数。

如果 dayValue 超出了月份的合理范围,setDate 将会相应地更新 Date 对象。

例如,如果为 dayValue 指定0,那么日期就会被设置为上个月的最后一天。

获取月份天数

// 获取月份天数
function getMonthDayCount(year, month) {
 return new Date(year, month, 0).getDate();
}
console.log(getMonthDayCount(2017, 10)); // 31

Date 第三个参数的本质跟 setDate 是一样的。

因为 date 为 0 时自动退到上个月的最后一天,所以这里月份也不需要减,正好的。

获取所有月份天数

function getAllMonthDayCount(year) {
 var days = [31, new Date(year, 2, 0).getDate(), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
 return days;
}
console.log(getAllMonthDayCount(2016));// [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

这个算是上面的延伸,不多解释。

是否是闰年

function isLeapYear(year) {
 return (year % 4 == 0) && (year % 100 != 0 || year % 400 == 0);
}

这是网上的代码,相信大多数人都用。

但其实你真的理解或者能记住么?

反正我不能。。

function isLeapYear(year) {
 return new Date(year, 2, 0).getDate() === 29;
}
console.log([
 isLeapYear(2000),
 isLeapYear(2016),
 isLeapYear(2017),
 isLeapYear(2018)
]); // [ true, true, false, false ]

这样看,是不是就非常简单容易理解了。

而且都不需要记,是不是想忘都忘不了?

天数加减操作

之前看到有人用相对秒数在计算几天前或几天后,甚至还在算跨月,跨年的情况。

其实直接 setDate 就好了,自动处理 跨月,跨年 的情况。

// 10天后是几月几号
var dt = new Date('2016-12-25');
dt.setDate(dt.getDate() + 10);
console.log(dt.toLocaleDateString()); // 2017/1/4


// 10天前是几月几号
var dt = new Date('2017-01-04');
dt.setDate(dt.getDate() - 10);
console.log(dt.toLocaleDateString()); // 2016/12/25

小结

虽然这些东西很基础,说方法名,可能大家都知道,但很多人却依然不会去使用。

就跟用 jq 却依然 for 循环处理结果一样。

这里只列举了部分例子,也许会有其他神奇的操作技巧等你去发现。

Javascript 相关文章推荐
通过百度地图获取公交线路的站点坐标的js代码
May 11 Javascript
js动态在form上插入enctype=multipart/form-data的问题
May 24 Javascript
基于jquery自己写tab滑动门(通用版)
Oct 30 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
May 11 Javascript
node.js中的fs.lstat方法使用说明
Dec 16 Javascript
Node.js中的流(Stream)介绍
Mar 30 Javascript
JavaScript中连接操作Oracle数据库实例
Apr 02 Javascript
JS递归遍历对象获得Value值方法技巧
Jun 14 Javascript
微信小程序  action-sheet详解及实例代码
Nov 09 Javascript
详解react-router4 异步加载路由两种方法
Sep 12 Javascript
JavaScript寄生组合式继承实例详解
Jan 06 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
Jan 31 jQuery
详解使用路由延迟加载 Angular 模块
Oct 12 #Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
Oct 11 #Javascript
js实现单张图片平移切换效果
Oct 11 #Javascript
jQuery自动或手动图片切换效果
Oct 11 #jQuery
简单实现vue验证码60秒倒计时功能
Oct 11 #Javascript
mui框架移动开发初体验详解
Oct 11 #Javascript
Scala解析Json字符串的实例详解
Oct 11 #Javascript
You might like
php实现的任意进制互转类分享
2015/07/07 PHP
PHP图形计数器程序显示网站用户浏览量
2016/07/20 PHP
PJBlog插件 防刷新的在线播放器
2006/10/25 Javascript
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
关于锚点跳转及jQuery下相关操作与插件
2012/10/01 Javascript
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
javascript去掉前后空格的实例
2013/11/07 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
Javascript字符串拼接小技巧(推荐)
2016/06/02 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
2016/12/27 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
全面分析JavaScript 继承
2019/05/30 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
python爬虫常用的模块分析
2014/08/29 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
Python 中的lambda函数介绍
2018/10/10 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
Pycharm中如何关掉python console
2020/10/27 Python
关于python中导入文件到list的问题
2020/10/31 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
高一政治教学反思
2014/01/28 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
办公楼租房协议书范本
2014/11/25 职场文书
社区节水倡议书
2015/04/29 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers
Windows server 2012 R2 安装IIS服务器
2022/04/29 Servers