http://heeroluo.net/Article/Detail/110

获取某个月份的天数

相信大家读小学的时候就知道一年十二个月各有多少天了,这里面有个特殊的存在——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,那创建出来的对象表示的就是该月的最后一天,如此就可以知道那个月有多少天了。

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

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

最新文章

  1. jquery 点击查看更多箭头变化,文字变化,超出带滚动条。
  2. MPMoviePlayerViewController
  3. 【python】引用其他目录文件
  4. 获取ip ,百度地图坐标点 和 在 后台调用 url()
  5. SpringMvc自定义拦截器
  6. 转:C/C++中,空数组、空类、类中空数组的解析及其作用
  7. C#颜色和名称样式对照表
  8. SQL Server 读取CSV中的数据
  9. 关于OF和CF
  10. idea-JSP out.println报错问题
  11. Apriori和FPTree
  12. 我把一些Linux的中英文命令做了对应翻译大家参考一下
  13. shell 按行读取文件的内容
  14. Android Studio导入项目一直卡在Building gradle project info的解决方案
  15. php获取父目录的方法 dirname()
  16. MFC 运行报错:Debug Assertion Failed! dbgheap.c
  17. Django模板过滤器详解
  18. pandas 数据类型转换
  19. UVA 10177 Sqr/Rects/Cubes/Boxes?
  20. 【docker】elasticsearch-head无法连接elasticsearch的原因和解决,集群健康值:未连接,ElasticSearch——跨域访问的问题

热门文章

  1. 1.ElasticSearch介绍及基本概念
  2. 【解决方案】客户端请求数据较大时,nginx返回数据被截断
  3. HTML5之indexedDB
  4. 设置vim的默认工作路径同时与自动设当前编辑的文件所在目录为当前工作路径不冲突
  5. UVa10791 - Minimum Sum LCM
  6. spring-boot学习资料
  7. Express+Mongoose(MongoDB)+Vue2全栈微信商城项目全记录
  8. JAVA基础-XML的解析
  9. eclipse项目中引入shiro-freemarker-tags会jar包冲突
  10. 数据库中WITH CHECK OPTION的用法