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 相关文章推荐
基于jquery的自定义鼠标提示效果 jquery.toolTip
Nov 14 Javascript
JQuery中根据属性或属性值获得元素(6种情况获取方法)
Jan 17 Javascript
XML文件转化成NSData对象的方法
Aug 12 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
Jan 18 Javascript
Angularjs中UI Router全攻略
Jan 29 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
Jul 18 jQuery
ES6与CommonJS中的模块处理的区别
Jun 13 Javascript
在小程序中使用Echart图表的示例代码
Aug 02 Javascript
layui的table单击行勾选checkbox功能方法
Aug 14 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
Jun 26 Javascript
jQuery三组基本动画与自定义动画操作实例总结
May 09 jQuery
Vue循环遍历选项赋值到对应控件的实现方法
Jun 22 Javascript
详解使用路由延迟加载 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
无线电的诞生过程
2021/03/01 无线电
深入掌握include_once与require_once的区别
2013/06/17 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
js不是基础的基础
2006/12/24 Javascript
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
2015/03/19 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
vue内置指令详解
2018/04/03 Javascript
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
react-router 路由切换动画的实现示例
2018/12/03 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
Python实现网站注册验证码生成类
2017/06/08 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
python3将视频流保存为本地视频文件
2018/06/20 Python
解决python 找不到module的问题
2020/02/12 Python
Python如何对XML 解析
2020/06/28 Python
Scrapy爬虫文件批量运行的实现
2020/09/30 Python
德国PC硬件网站:CASEKING
2016/10/20 全球购物
连卡佛中国官网:Lane Crawford中文站
2018/01/27 全球购物
高中班主任评语
2014/12/30 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
结婚主持人致辞
2015/07/28 职场文书
高中优秀作文(范文)
2019/08/15 职场文书