JavaScript 中为 Date 类实现 DateAdd 方法

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?代表月。

最后得到的代码如下:

  1. Date.prototype.add?=?function(part,?value)?{
  2. ????value?*=?1;
  3. ????if(isNaN(value))?{
  4. ????????value?=?0;
  5. ????}
  6. ????switch(part)?{
  7. ????????case?”y”:
  8. ????????????this.setUTCFullYear(this.getUTCFullYear()?+?value);
  9. ????????????break;
  10. ????????case?”m”:
  11. ????????????this.setUTCMonth(this.getUTCMonth()?+?value);
  12. ????????????break;
  13. ????????case?”d”:
  14. ????????????this.setUTCDate(this.getUTCDate()?+?value);
  15. ????????????break;
  16. ????????case?”h”:
  17. ????????????this.setUTCHours(this.getUTCHours()?+?value);
  18. ????????????break;
  19. ????????case?”n”:
  20. ????????????this.setUTCMinutes(this.getUTCMinutes()?+?value);
  21. ????????????break;
  22. ????????case?”s”:
  23. ????????????this.setUTCSeconds(this.getUTCSeconds()?+?value);
  24. ????????????break;
  25. ????????default:
  26. ????}
  27. }

代码里的?getUTCFullYear?等等也可以换成通常用的?getFullYear,因为是相对调整,所以用哪一个是没有区别的。

希望此文对你有所帮助。

赞(0) 打赏
未经允许不得转载:WEB前端开发 » JavaScript 中为 Date 类实现 DateAdd 方法

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

前端开发相关广告投放 更专业 更精准

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏