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 相关文章推荐
图片之间的切换
Jun 26 Javascript
jQuery插件制作之全局函数用法实例
Jun 01 Javascript
javascript页面倒计时实例
Jul 25 Javascript
js数组去重的5种算法实现
Nov 04 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
Jan 08 Javascript
AngularJS的ng Http Request与response格式转换方法
Nov 07 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
Feb 15 Javascript
vue自定义filters过滤器
Apr 26 Javascript
React styled-components设置组件属性的方法
Aug 07 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
Jul 03 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
Sep 09 Javascript
vue请求服务器数据后绑定不上的解决方法
Oct 30 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 安全过滤函数代码
2011/05/07 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
2015/04/21 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
jQuery 核心函数以及jQuery对象
2010/03/23 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
Node.js中的缓冲与流模块详细介绍
2015/02/11 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
2017/02/22 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
[01:22:42]2014 DOTA2华西杯精英邀请赛 5 24 DK VS LGD
2014/05/26 DOTA
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
Python3批量生成带logo的二维码方法
2019/06/24 Python
python3 sorted 如何实现自定义排序标准
2020/03/12 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
什么是类的返射机制
2016/02/06 面试题
应急管理培训方案
2014/06/12 职场文书
喝酒驾驶检讨书
2014/10/01 职场文书
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL
python图像处理 PIL Image操作实例
2022/04/09 Python