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

作者:拾光

时间:2026-10-28

浏览:510

本文介绍JavaScript中Date对象的几个实用技巧。通过构造特定日期的Date对象,可轻松获取某月天数并判断闰年;利用getTimezoneOffset或解析toString输出可获取本地时区;记录前后时间差可测量代码执行耗时;设置过期时间为1970年1月1日可实现删除Cookie的功能。

文章目录

获取某个月份的天数与判断闰年

获取某个月份的天数

熟悉日历的人都知道一年十二个月各有不同的天数,其中二月最为特殊。闰年的二月包含29天,而平年则为28天。由于许多人可能已经忘记了具体的闰年判定规则,下面介绍一种利用JavaScript Date对象特性来快速获取当月天数的方法。

代码如下:

var date = new Date(2013, 2, 0);
date.getDate(); // 28
date = new Date(2012, 2, 0);
date.getDate(); // 29

在创建Date对象时,可以传入年、月(0至11,其中0代表一月)和日三个参数。如果将日参数设置为0,生成的Date对象将表示上个月的最后一天。利用这一特性,即可方便地计算出指定月份包含多少天。

基于同样的原理,我们还可以利用该方法来判断某一年是否为闰年:

代码如下:

function isLeapYear(year) {
return new Date(year, 2, 0).getDate() === 29;
}
isLeapYear(2012); // true

获取时区

获取本地时区的方法

Date类型的getTimezoneOffset()方法用于获取本地时间与格林威治标准时间(GMT)之间的差值,单位是分钟。例如:

代码如下:

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

将获取到的时间差除以60,并取负值,即可得到所在的时区数值。

此外,还可以调用Date类型的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

删除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();

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章