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 相关文章推荐
用JQuery在网页中实现分隔条功能的代码
Aug 09 Javascript
JS中数组Array的用法示例介绍
Feb 20 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
Sep 14 Javascript
javascript事件绑定学习要点
Mar 09 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
Oct 01 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
Oct 04 Javascript
BootStrap Datetimepicker 汉化的实现代码
Feb 10 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
Feb 24 Javascript
AngularJS中$http使用的简单介绍
Mar 17 Javascript
认识jQuery的Promise的具体使用方法
Oct 10 jQuery
Vue.js结合bootstrap前端实现分页和排序效果
Dec 29 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
Feb 07 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
使用TinyButStrong模板引擎来做WEB开发
2007/03/16 PHP
php下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
PHP四舍五入精确小数位及取整
2014/01/14 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
php递归遍历删除文件的方法
2015/04/17 PHP
PHP7.0版本备注
2015/07/23 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序
2017/02/19 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
Python进程间通信用法实例
2015/06/04 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
python opencv肤色检测的实现示例
2020/12/21 Python
Europcar美国/加拿大:预订汽车或卡车租赁服务
2018/11/13 全球购物
市级文明单位申报材料
2014/05/07 职场文书
新学期开学演讲稿
2014/05/24 职场文书
医学生自荐信范文
2015/03/05 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle