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 控制页面跳转的5种方法
Sep 09 Javascript
iframe父页面获取子页面参数的方法
Feb 21 Javascript
WEB前端设计师常用工具集锦
Dec 09 Javascript
基于js实现投票的实例代码
Aug 04 Javascript
jQuery基于ajax实现星星评论代码
Aug 07 Javascript
jquery制做精致的倒计时特效
Jun 13 Javascript
移动开发之自适应手机屏幕宽度
Nov 23 Javascript
jQuery特殊符号转义的实现
Nov 30 Javascript
vue.js中$set与数组更新方法
Mar 08 Javascript
angularJs中json数据转换与本地存储的实例
Oct 08 Javascript
写gulp遇到的ES6问题详解
Dec 03 Javascript
解决vue-router 嵌套路由没反应的问题
Sep 22 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
php事务处理实例详解
2014/07/11 PHP
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
javascript五图轮播切换实用版
2012/08/17 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
html文本框提示效果的示例代码
2014/06/28 Javascript
js给selected添加options的方法
2015/05/06 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
Angular.js中定时器循环的3种方法总结
2017/04/27 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
原生JS生成指定位数的验证码
2020/10/28 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
Python Scrapy多页数据爬取实现过程解析
2020/06/12 Python
python开发入门——列表生成式
2020/09/03 Python
python如何对链表操作
2020/10/10 Python
在购买印度民族服饰:Soch
2020/09/15 全球购物
医学类个人求职信范文
2014/02/05 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
学雷锋日活动总结
2015/02/06 职场文书
小学运动会通讯稿
2015/07/18 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
创业计划书之闲置物品置换中心
2019/12/25 职场文书
django学习之ajax post传参的2种格式实例
2021/05/14 Python
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL