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 静态对象和构造函数的使用和公私问题
Mar 02 Javascript
JS getStyle获取最终样式函数代码
Apr 01 Javascript
JS验证身份证有效性示例
Oct 11 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
Oct 29 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
Jun 14 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
Jun 16 Javascript
JS实现登录页密码的显示和隐藏功能
Dec 06 Javascript
让网站自动生成章节目录索引的多个js代码
Jan 07 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
Jun 01 Javascript
详解Vue项目部署遇到的问题及解决方案
Jan 11 Javascript
微信小程序制作扭蛋机代码实例
Sep 24 Javascript
利用layer实现表单完美验证的方法
Sep 26 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
自己动手做一个SQL解释器
2006/10/09 PHP
使用PHP编写发红包程序
2015/07/22 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
PDO::rollBack讲解
2019/01/29 PHP
jQuery select的操作实现代码
2009/05/06 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
深入理解JS正则表达式---分组
2016/07/18 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
基于js文件加载优化(详解)
2018/01/03 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
python绘制简单折线图代码示例
2017/12/19 Python
Python WSGI的深入理解
2018/08/01 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
python 函数中的参数类型
2020/02/11 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
查询优化的一般准则有哪些
2015/03/08 面试题
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
事业单位鉴定材料
2014/05/25 职场文书
自主招生学校推荐信
2014/09/26 职场文书
三方协议书
2015/01/27 职场文书
保研推荐信格式
2015/03/25 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
健康证明
2015/06/19 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
青岛市的收音机研制与生产
2022/04/07 无线电
如何通过cmd 连接阿里云服务器
2022/04/18 Servers