javascript完美实现给定日期返回上月日期的方法

 更新时间:2017年06月15日 08:57:56   作者:北漂的小羊   我要评论
这篇文章主要介绍了javascript完美实现给定日期返回上月日期的方法,结合实例形式分析了javascript日期时间的计算技巧,并给出了格式化日期时间的操作方法,需要的朋友可以参考下

本文实例讲述了javascript完美实现给定日期返回上月日期的方法。分享给大家供大家参考,具体如下:

在项目开发中,使用javascript对日期进行处理时,因为在查询中都会有一个初始值,大多都会在当前日期的基础上推一个月,在这种情况下,如果自己写一个,需要考虑的情况较多,在这里给大家分享一下一个比较完善的解决这个问题的方法。供大家参考。例如:给定截止日期enddate=2010-07-31

计算得到开始日期startdate=2010-06-30

这个问题的关键在于对以下几处的考虑:

1、startdate跨年

2、startdate是2月(需考虑闰年的情况)

3、大小月

<html>
<script type="text/javascript">
function getInitStartDate(enddate) {
  var comp = enddate.split("-");
  var year = comp[0];
  var month = comp[1];
  var date = comp[2];
  if (month == "01") { //前一月跨年
    month = 12;
    year = year - 1;
  } else {
    month = month - 1;
    if (month == 2 && date > 28) {
      date = isLeapYear(year) ? 29 : 28;
    } else if (date == 31) {
      switch (month) {
      case 4:
      case 6:
      case 9:
      case 11:
        date = 30;
        break;
      default:
        break;
      }
    }
  }
  month = ("" + month).length == 1 ? ("0" + month) : ("" + month);
  var dateFormat = year + "-" + month + "-" + date;
  return dateFormat;
}
function isLeapYear(y) { //判断y是否为闰年
  return (y % 4 == 0) && (y % 400 == 0 || y % 100 != 0);
}
alert(getInitStartDate("2010-07-31"));
</script>
</html>

配套给出一个格式化日期的方法:

<script language="JavaScript"> 
Date.prototype.format = function(format) //author: meizz
{
 var o = {
  "M+" : this.getMonth()+1, //month
  "d+" : this.getDate(),  //day
  "h+" : this.getHours(),  //hour
  "m+" : this.getMinutes(), //minute
  "s+" : this.getSeconds(), //second
  "q+" : Math.floor((this.getMonth()+3)/3), //quarter
  "S" : this.getMilliseconds() //millisecond
 }
 if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
  (this.getFullYear()+"").substr(4 - RegExp.$1.length));
 for(var k in o)if(new RegExp("("+ k +")").test(format))
  format = format.replace(RegExp.$1,
   RegExp.$1.length==1 ? o[k] :
    ("00"+ o[k]).substr((""+ o[k]).length));
 return format;
}
alert(new Date().format("yyyy-MM-dd"));
alert(new Date("january 12 2008 11:12:30").format("yyyy-MM-dd hh:mm:ss"));
</script>

PS:这里再为大家推荐几款比较实用的天数计算在线工具供大家使用:

在线日期/天数计算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi

在线日期计算器/相差天数计算器:
http://tools.jb51.net/jisuanqi/datecalc

在线日期天数差计算器:
http://tools.jb51.net/jisuanqi/onlinedatejsq

在线天数计算器:
http://tools.jb51.net/jisuanqi/datejsq

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript时间与日期操作技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

  • JavaScrpt的面向对象全面解析

    JavaScrpt的面向对象全面解析

    javascript面向对象知识很广泛,想深入理解需要花费一些时间,本文给大家介绍了js面向对象的创建及相关属性介绍,感兴趣的小伙伴一起学习吧
    2017-05-05
  • JS获取鼠标选中的文字

    JS获取鼠标选中的文字

    下面是小编给大家分享的js获取鼠标选中的文字和js获取鼠标选中的值关键代码,大家如果有需要可以参考下
    2016-08-08
  • 小程序中英文混合排序问题解决

    小程序中英文混合排序问题解决

    这篇文章主要介绍了小程序中英文混合排序问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • JS函数的定义与调用方法推荐

    JS函数的定义与调用方法推荐

    下面小编就为大家带来一篇JS函数的定义与调用方法推荐。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • Javascript类库的顶层对象名用户体验分析

    Javascript类库的顶层对象名用户体验分析

    针对jQuery、Ext、KISSY三者类库的对比及分析已经很多了,但多数是从功能和设计的角度切入,因此本篇文章决定换一个特殊的角度,从各类库的顶层对象名的键盘输入的体验上来对这三个类库进行比较。
    2010-10-10
  • js异或加解密效果代码

    js异或加解密效果代码

    比较不错的js异或加解密实例代码,方便学习js加解密的朋友
    2008-06-06
  • 学习JavaScript设计模式之装饰者模式

    学习JavaScript设计模式之装饰者模式

    这篇文章主要为大家介绍了JavaScript设计模式中的装饰者模式,对JavaScript设计模式感兴趣的小伙伴们可以参考一下
    2016-01-01
  • 详解webpack模块加载器兼打包工具

    详解webpack模块加载器兼打包工具

    这篇文章主要介绍了webpack模块加载器兼打包工具,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • js实现正方形颜色从下往上升的效果

    js实现正方形颜色从下往上升的效果

    大家有没有看到类似颜色从下往上升的效果,在本例将与大家介绍下此效果的具体实现
    2014-08-08
  • JS左右无缝滚动(一般方法+面向对象方法)

    JS左右无缝滚动(一般方法+面向对象方法)

    其实不管是一般方法还是面向对象的方法都还有很多可以改进的地方,有需要的先将就着用吧
    2012-08-08

最新评论