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


Posted in Javascript onJune 15, 2017

本文实例讲述了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.3water.com/jisuanqi/date_jisuanqi

在线日期计算器/相差天数计算器:
http://tools.3water.com/jisuanqi/datecalc

在线日期天数差计算器:
http://tools.3water.com/jisuanqi/onlinedatejsq

在线天数计算器:
http://tools.3water.com/jisuanqi/datejsq

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

Javascript 相关文章推荐
jquery ajax例子返回值详解
Sep 11 Javascript
Jquery实现图片左右自动滚动示例
Sep 25 Javascript
JS中的this变量的使用介绍
Oct 21 Javascript
jquery $.trim()方法使用介绍
May 21 Javascript
原生js实现日期联动
Jan 12 Javascript
JavaScript对象反射用法实例
Apr 17 Javascript
javascript最基本的函数汇总
Jun 25 Javascript
js只执行1次的函数示例
Jul 20 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
Oct 19 Javascript
js实现轮播图的完整代码
Oct 26 Javascript
微信小程序JS加载esmap地图的实例详解
Sep 04 Javascript
用React Native制作一个简单的游戏引擎
May 27 Javascript
JS自动生成动态HTML验证码页面
Jun 14 #Javascript
自定义vue全局组件use使用、vuex的使用详解
Jun 14 #Javascript
详解AngularJS 模块化
Jun 14 #Javascript
JS判断时间段的实现代码
Jun 14 #Javascript
bootstrap选项卡扩展功能详解
Jun 14 #Javascript
zTree树形插件异步加载方法详解
Jun 14 #Javascript
详解Angular2响应式表单
Jun 14 #Javascript
You might like
php中看实例学正则表达式
2006/12/25 PHP
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
2017/09/13 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
javascript Keycode对照表
2009/10/24 Javascript
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
JavaScript实现基于Cookie的存储类实例
2015/04/10 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
详解Angular-Cli中引用第三方库
2017/05/21 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
vue-router为激活的路由设置样式操作
2020/07/18 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
Python3中bytes类型转换为str类型
2018/09/27 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
python支持多线程的爬虫实例
2019/12/21 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
python 实现图片批量压缩的示例
2020/12/18 Python
基于HTML5的WebSocket的实例代码
2018/08/15 HTML / CSS
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
普通大学毕业生自荐信
2013/11/04 职场文书
入党转预备思想汇报
2014/01/07 职场文书
美术专业个人自我评价
2014/01/18 职场文书
店长职务说明书
2014/02/04 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
入党函调证明材料
2015/06/19 职场文书