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 相关文章推荐
javascript实现的鼠标链接提示效果生成器代码
Jun 28 Javascript
jquery调用asp.net 页面后台的实现代码
Apr 27 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
Nov 30 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
Apr 21 Javascript
jquery ajax 简单范例(界面+后台)
Nov 19 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
Mar 25 Javascript
JS实现页面跳转参数不丢失的方法
Nov 28 Javascript
JavaScript模块详解
Dec 18 Javascript
vue v-model实现自定义样式多选与单选功能
Jul 05 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
Oct 25 Javascript
vue filter 完美时间日期格式的代码
Aug 14 Javascript
vue路由跳转传递参数的方式总结
May 10 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
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
php自动加载代码实例详解
2021/02/26 PHP
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
2010/03/15 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
JavaScript Html实现移动端红包雨功能页面
2021/01/10 Javascript
python读写文件操作示例程序
2013/12/02 Python
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
Python中存取文件的4种不同操作
2018/07/02 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
Django解决frame拒绝问题的方法
2020/12/18 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
从零实现一个自定义html5播放器的示例代码
2017/08/01 HTML / CSS
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
英国大码女性时装零售商:Evans
2018/08/29 全球购物
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
毕业生就业自荐信
2013/12/04 职场文书
银行求职信
2014/05/31 职场文书
企业宣传口号
2014/06/12 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
处级干部考察材料
2014/12/24 职场文书
黄山导游词
2015/01/31 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
Nginx实现负载均衡的项目实践
2022/03/18 Servers