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 相关文章推荐
use jscript Create a SQL Server database
Jun 16 Javascript
Jquery中对数组的操作代码
Aug 12 Javascript
jQuery.extend 函数详解
Feb 03 Javascript
JS创建类和对象的两种不同方式
Aug 08 Javascript
jQuery中prev()方法用法实例
Jan 08 Javascript
js实现类似菜单风格的TAB选项卡效果代码
Aug 28 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
Jan 14 Javascript
AngularJS中的JSONP实例解析
Dec 01 Javascript
详解vue嵌套路由-params传递参数
May 23 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
Dec 11 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
Aug 09 jQuery
微信小程序中使用Async-await方法异步请求变为同步请求方法
Mar 28 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上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
php设计模式 Delegation(委托模式)
2011/06/26 PHP
PHP实现适用于自定义的验证码类
2016/06/15 PHP
JQuery UI皮肤定制
2009/07/27 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
jQuery增加、删除及修改select option的方法
2016/08/19 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
vue路由--网站导航功能详解
2019/03/29 Javascript
使用python BeautifulSoup库抓取58手机维修信息
2013/11/21 Python
django批量导入xml数据
2016/10/16 Python
Python探索之SocketServer详解
2017/10/28 Python
python分块读取大数据,避免内存不足的方法
2018/12/10 Python
python常用函数与用法示例
2019/07/02 Python
PyCharm中代码字体大小调整方法
2019/07/29 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
Python模块future用法原理详解
2020/01/20 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
Django设置Postgresql的操作
2020/05/14 Python
英国女性时尚品牌:Apricot
2018/12/04 全球购物
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
汽车检测与维修专业求职信
2013/10/30 职场文书
大学新生入学教育方案
2014/05/16 职场文书
读书月活动方案
2014/05/22 职场文书
经济贸易系毕业生求职信
2014/05/31 职场文书
大学生自荐材料范文
2014/12/30 职场文书
2015年评职称个人工作总结
2015/10/15 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技