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 数组实现一个类似ruby的迭代器
Oct 27 Javascript
锋利的jQuery jQuery中的DOM操作
Mar 21 Javascript
JS 实现导航栏悬停效果
Sep 23 Javascript
javascript常见用法总结
May 22 Javascript
javascript的列表切换【实现代码】
May 03 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
May 30 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
Nov 17 Javascript
JS基于ES6新特性async await进行异步处理操作示例
Feb 02 Javascript
JS中自定义事件的使用与触发操作实例分析
Nov 01 Javascript
Vue如何使用混合Mixins和插件开发详解
Feb 05 Javascript
node.js 微信开发之定时获取access_token
Feb 07 Javascript
JS通用方法触发点击事件代码实例
Feb 17 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的是与非
2013/06/05 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
JS Timing
2007/04/21 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
JS常用知识点整理
2017/01/21 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
2017/09/10 Javascript
webpack4简单入门实例
2018/09/06 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
python多重继承实例
2014/10/11 Python
Python 多进程和数据传递的理解
2017/10/09 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
python线程池threadpool使用篇
2018/04/27 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
什么是python的id函数
2020/06/11 Python
python如何使用腾讯云发送短信
2020/09/17 Python
什么是抽象
2015/12/13 面试题
行政助理岗位职责范文
2013/12/03 职场文书
采购求职信
2014/03/17 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
通用员工手册范本
2015/05/14 职场文书
三八节活动简报
2015/07/20 职场文书