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]点出统计器
Oct 11 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
Apr 01 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
Jun 08 Javascript
JS实现slide文字框缩放伸展效果代码
Nov 05 Javascript
Bootstrap精简教程
Nov 27 Javascript
jQuery插件Validate实现自定义表单验证
Jan 18 Javascript
一款简单的jQuery图片标注效果附源码下载
Mar 22 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
Apr 19 Javascript
bootstrap table分页模板和获取表中的ID方法
Jan 10 Javascript
JS实现上传图片的三种方法并实现预览图片功能
Jul 14 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
Nov 05 Javascript
vue同个按钮控制展开和折叠同个事件操作
Jul 29 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与MySQL交互使用详解
2006/10/09 PHP
PHP微框架Dispatch简介
2014/06/12 PHP
php中 $$str 中 "$$" 的详解
2015/07/06 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
jQuery实现的导航条切换可显示隐藏
2014/10/22 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
关于JSON与JSONP简单总结
2016/08/16 Javascript
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
python基础教程之五种数据类型详解
2017/01/12 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
python 重定向获取真实url的方法
2018/05/11 Python
python实现图片彩色转化为素描
2019/01/15 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
2019/05/13 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
Python lxml模块的基本使用方法分析
2019/12/21 Python
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
Linux机考试题
2015/10/16 面试题
保卫科工作岗位职责
2014/03/01 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
财务工作失误检讨书
2015/02/19 职场文书
2015年党风廉政建设个人总结
2015/08/18 职场文书
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python