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 相关文章推荐
jQuery Autocomplete自动完成插件
Jul 17 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
Oct 24 Javascript
AngularJS实现Model缓存的方式
Feb 03 Javascript
关于JavaScript作用域你想知道的一切
Feb 04 Javascript
Javascript中document.referrer隐藏来源的方法
Jan 16 Javascript
JS简单获取当前年月日星期的方法示例
Feb 07 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
May 24 Javascript
Angularjs cookie 操作实例详解
Sep 27 Javascript
jquery 获取索引值在一定范围的列表方法
Jan 25 jQuery
小程序开发之模态框组件封装
Apr 23 Javascript
Vue-cli4 配置 element-ui 按需引入操作
Sep 11 Javascript
vue+element UI实现树形表格
Dec 29 Vue.js
了解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
php mysql数据库操作类
2008/06/04 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
非常实用的PHP常用函数汇总
2014/12/17 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
三种取消选中单选框radio的方法
2014/09/09 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
彻底解决 webpack 打包文件体积过大问题
2017/07/07 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
从零学Python之入门(二)基本数据类型
2014/05/25 Python
python+mysql实现简单的web程序
2014/09/11 Python
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
详解在Python程序中自定义异常的方法
2015/10/16 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
DRF框架API版本管理实现方法解析
2020/08/21 Python
python实现猜拳游戏项目
2020/11/30 Python
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
夜大毕业自我鉴定
2013/10/11 职场文书
20岁生日感言
2014/01/13 职场文书
计算机专业优秀大学生自我总结
2014/01/21 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
社区母亲节活动记录
2014/03/06 职场文书
安全月活动总结
2014/05/05 职场文书
机电系毕业生求职信
2014/07/11 职场文书
东京审判观后感
2015/06/01 职场文书
公司食堂管理制度
2015/08/05 职场文书
小学英语课教学反思
2016/02/15 职场文书
Pandas数据结构之Series的使用
2022/03/31 Python