JavaScript日期类型的一些用法介绍


Posted in Javascript onMarch 02, 2015

获取某个月份的天数

相信大家读小学的时候就知道一年十二个月各有多少天了,这里面有个特殊的存在——2月。闰年的2月有29天,非闰年的2月只有28天。估计不少人跟我一样,已经不记得闰年的规则了,这时候,下面的这个方法就派上用场了。

var date = new Date(2013, 2, 0);

date.getDate();  // 28

date = new Date(2012, 2, 0);

date.getDate();  // 29

创建Date对象时可以传入三个参数,分别是年、月(0~11,0表示一月)、日,如果日的参数为0,那创建出来的对象表示的就是上个月的最后一天,如此就可以知道上个月有多少天了。

同样的,我们也可以通过这个方法判断某年是否闰年:

function isLeapYear(year) {

    return new Date(year, 2, 0).getDate() === 29;

}

isLeapYear(2012);  // true

获取时区

日期类型的 getTimezoneOffset() 方法可以获取格林威治时间和本地时间之间的时间差,以分钟为单位。例如:

var date = new Date();

var timezoneOffset = date.getTimezoneOffset(); // 中国(东八区)为-480

-timezoneOffset / 60;  // 8

把获取到的时间差除以60,再取负值就是所在的时区了。

除此以外,还有一个方法。调用日期类型的 toString() 后,可以得到一段固定格式的日期字符串:

new Date().toString(); // Sun Mar 10 2013 16:41:12 GMT+0800 (中国标准时间)

显而易见,GMT后面的+800就是我们要的时区了,只要通过正则表达式匹配一下就可以拿到该值。
/GMT([+-]\d+)/.test( new Date().toString() );

var timezone = RegExp.$1;  // +0800

不过此时的 timezone 变量是字符串,如果要转成数字类型,还要进行一些处理。

计算运行时间

如何测量某段程序的执行时间呢?方法很简单,在执行前记录一次时间,执行后用当前时间减去执行前的时间,就得到结果了:

var startTime = new Date();

// some program

console.log(new Date() - startTime);

这里无需手动把日期转换为数字,因为进行减法运算的时候自然会强制转换。这样算出来的结果是毫秒级的,精度不是很够,不过对浏览器端的Javascript来说,也没必要纠结于1毫秒以内的消耗了。

删除cookie

准确地说,我们没法直接通过Javascript删除cookie。要想把某个cookie从这个世界抹杀掉,唯一的办法就是让它过期,这样浏览器的内建机制就会把它自动干掉。

而要让cookie过期,最直截了当的方法就是把它的过期时间设为最小值。Javascript里面能表示的最小日期就是1970年1月1日0时0点0分,通过 new Date(0) 就可以创建出这样一个日期对象:

var cookieName = 'name'; // cookie名

document.cookie = cookieName + '=' + '; expires=' + new Date(0).toUTCString();
Javascript 相关文章推荐
关于JS控制代码暂停的实现方法分享
Oct 11 Javascript
模拟一个类似百度google的模糊搜索下拉列表
Apr 15 Javascript
每天一篇javascript学习小结(RegExp对象)
Nov 17 Javascript
js判断上传文件后缀名是否合法
Jan 28 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
May 13 Javascript
JS使用eval()动态创建变量的方法
Jun 03 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
Dec 13 Javascript
js实现手机web图片左右滑动效果
Dec 29 Javascript
JS扩展String.prototype.format字符串拼接的功能
Mar 09 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
Apr 15 Javascript
JS实现简单的文字无缝上下滚动功能示例
Jun 22 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
Nov 02 Javascript
了解Javascript的模块化开发
Mar 02 #Javascript
JS实现的4种数字千位符格式化方法分享
Mar 02 #Javascript
js实现图片漂浮效果的方法
Mar 02 #Javascript
ECMAScript 5中的属性描述符详解
Mar 02 #Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
Mar 02 #Javascript
JavaScript数组常用方法
Mar 02 #Javascript
使用npm发布Node.JS程序包教程
Mar 02 #Javascript
You might like
天津市收音机工业发展史
2021/03/04 无线电
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
php的debug相关函数用法示例
2016/07/11 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
学习ExtJS Column布局
2009/10/08 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
Python脚本后台运行的几种方式
2015/03/09 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
详解Vue中使用Axios拦截器
2019/04/22 Javascript
微信小程序登录数据解密及状态维持实例详解
2019/05/06 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
JavaScript实现密码强度实时验证
2020/03/18 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
python之消除前缀重命名的方法
2018/10/21 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
CSS3控制HTML元素动画效果
2014/02/08 HTML / CSS
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
英国景点门票网站:attractiontix
2019/08/27 全球购物
高职教师岗位职责
2013/12/24 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书
mysql的数据压缩性能对比详情
2021/11/07 MySQL