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 相关文章推荐
addRule在firefox下的兼容写法
Nov 30 Javascript
jQuery contains过滤器实现精确匹配使用方法
Apr 12 Javascript
javascript实现复选框超过限制即弹出警告框的方法
Feb 25 Javascript
Bootstrap按钮下拉菜单组件详解
May 10 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
Mar 21 Javascript
Ionic2开发环境搭建教程
Aug 20 Javascript
js 判断一个数字是不是2的n次方幂的实例
Nov 26 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
May 22 Javascript
webpack 开发和生产并行设置的方法
Nov 08 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
Aug 28 Javascript
移动端JS实现拖拽两种方法解析
Oct 12 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
Jan 20 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
Yii2创建多界面主题(Theme)的方法
2016/10/08 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
新闻内页-JS分页
2006/06/07 Javascript
JavaScript 模拟用户单击事件
2009/12/31 Javascript
js 未结束的字符串常量错误解决方法
2010/06/13 Javascript
javascript跨域刷新实现代码
2011/01/01 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
解释&&和||在javascript中的另类用法
2014/07/28 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
jQuery实现textarea自动增长宽高的方法
2015/12/18 Javascript
Bootstrap3.0学习教程之JS折叠插件
2016/05/27 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
浅谈angular4生命周期钩子
2017/09/05 Javascript
微信小程序常用简易小函数总结
2019/02/01 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
Python中optparse模块使用浅析
2015/01/01 Python
Python实现一个简单的MySQL类
2015/01/07 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
python 一个figure上显示多个图像的实例
2019/07/08 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
英国最受欢迎的在线隐形眼镜商店:VisionDirect.co.uk
2018/12/06 全球购物
上海期货面试题
2014/01/31 面试题
应届毕业生个人自荐信范文
2013/11/30 职场文书
中药专业自荐信范文
2014/03/18 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
总经理助理岗位职责范本
2015/03/31 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
MongoDB支持的索引类型
2022/04/11 MongoDB