JavaScript 中为 Date 类实现 DateAdd 方法
作者:xujiwei 来源:HotHeart's BLOG 发布时间:2008-04-03 16:19:00
标签:date,dateadd,javascript,类
JavaScript 中的并没有提供像 VBScript 里的 DateAdd 方法用于日期的操作,像加一年,减一个月什么的,这在服务端经常用到,比如设置 Cookie 的到期时间为现在时间的后一年,那么就需要使用这个方法了。
虽然 JavaScript 中没有 DateAdd 方法,但是 Date 类却有设置年月日时分秒的方法,比如 setFullYear、setMonth 之类的,而且,这些个方法的参数是可以为负的,在设置之后, Date 类会自行进行调整,每个月是30天还是31天,年份是不是闰年都不用我们来管了,只管设置值就是。
有了这个特性之后,我们就可以很方便的来为 Date 类添加 add 方法了。之所以不添加一个 DateAdd 方法而是给 Date 类添加一个 add 方法是因为我觉得那样更加方便,当然你也可以将 Date 类的 add 方法转换成为一个全局函数 DateAdd。
为了对每一个 Date 类的实例都有效,这里用到了 prototype 对象。
在 VBScript 里的 DateAdd 方法是用一个字符串来控制所加的量是年还是月还是其他的,所以在这里我也模仿 VBScript 里的 DateAdd 方法,使用一个字符串来控制所加量对应的部分,比如 y 代表年,m 代表月。
最后得到的代码如下:
Date.prototype.add = function(part, value) {
value *= 1;
if(isNaN(value)) {
value = 0;
}
switch(part) {
case "y":
this.setUTCFullYear(this.getUTCFullYear() + value);
break;
case "m":
this.setUTCMonth(this.getUTCMonth() + value);
break;
case "d":
this.setUTCDate(this.getUTCDate() + value);
break;
case "h":
this.setUTCHours(this.getUTCHours() + value);
break;
case "n":
this.setUTCMinutes(this.getUTCMinutes() + value);
break;
case "s":
this.setUTCSeconds(this.getUTCSeconds() + value);
break;
default:
}
}
代码里的 getUTCFullYear 等等也可以换成通常用的 getFullYear,因为是相对调整,所以用哪一个是没有区别的。
希望此文对你有所帮助。
转载说明:未经特别说明内容转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。


猜你喜欢
- 先看下object类中对__new__()方法的定义: class object: @staticm
- 这篇文章主要介绍了如何基于pythonnet调用halcon脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 一:操作redis1:redis拓展安装composer require predis/predis或者你也可以通过 PECL 安装&nbs
- 原生实现jQuery的sibling方法<body><span>我是span标签</span><d
- 一、迭代器(foreach)1、可迭代的对象内置有__iter__方法的都叫可迭代的对象。Python内置str、list、tuple、di
- 感谢 Dawn CSS Reset 的尝试和建议。针对字体的写法,觉得需要说明一下:body,button, input, select,
- 1.安装Apache 在终端中输入下面的命令就可以安装Apache了:sudo yum install httpdsudo的意思是
- 目录一、善用组件让代码更有条理性1、 提取UI组件2、按模块提取业务组件3、按功能提取功能组件二、利用v-bind使组件的属性更具有可读性三
- 1、Select元素2、定位select方法一:二次定位先定位 select 框,再定位 select 里的选项但有时候选项是无法定位的,所
- 本文以实例形式分析了Python多进程编程技术,有助于进一步Python程序设计技巧。分享给大家供大家参考。具体分析如下:一般来说,由于Py
- 在官方介绍里有这么一句话:Yarn is a package manager for your code. It allows you to
- 这几天有这样一个需求,要将用户登陆系统的信息统计出来,做成一个报表。当用户登陆成功的时候,服务器会往日志文件里写一条像下面这种格式的记录:”
- 1.添加文本标签 plt.text()用于在绘图过程中,在图像上指定坐标的位置添加文本。需要用到的是plt.text()方法。&em
- 项目应用中,曾有以下一个场景:接口中要求发送一个int类型的流水号,由于多线程模式,如果用时间戳,可能会有重复的情况(当然概率很小)。所以想
- 本文实例讲述了python递归计算N!的方法。分享给大家供大家参考。具体实现方法如下:def factorial(n): if
- 一、前言对很多人来说,将PDF转换为可编辑的文本是个刚需,却苦于没有简单的方法。发现 pdf 幻灯片,效果还不错。传统的讲座通常伴随有很多p
- 对range()逆序的解释在 Python3.6 中,range() 函数返回一个可迭代的范围对象,范围类型表示不可变的数字序列,一般用在
- 如果 replaceText 为函数,对于每一个匹配的子字符串,调用该函数时带有下面的 m+3 个参数,此处 m 是在 rgExp 中捕获的
- 本文实例讲述了python使用BeautifulSoup分析网页信息的方法。分享给大家供大家参考。具体如下:这段python代码查找网页上的
- 使用tf.trian.NewCheckpointReader(model_dir)一个标准的模型文件有一下文件, model_dir就是My