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 入门实例1
Jun 25 Javascript
js检测网络是否具体连接功能的代码
May 23 Javascript
使用requestAnimationFrame实现js动画性能好
Aug 06 Javascript
javascript 正则表达式去空行方法
Jan 24 Javascript
bootstrap响应式表格实例详解
May 15 Javascript
jquery 实现拖动文件上传加载进度条功能
Mar 18 jQuery
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
Aug 20 Javascript
浅谈js中的bind
Mar 18 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
Nov 21 Javascript
解决vant-UI库修改样式无效的问题
Nov 03 Javascript
如何在JavaScript中等分数组的实现
Dec 13 Javascript
vue编写简单的购物车功能
Jan 08 Vue.js
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
调频问题解答
2021/03/01 无线电
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
php处理复杂xml数据示例
2016/07/11 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
jQuery页面刷新(局部、全部)问题分析
2016/01/09 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
2018/08/07 Javascript
NumPy 如何生成多维数组的方法
2018/02/05 Python
Python用字典构建多级菜单功能
2019/07/11 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
基于python+selenium自动健康打卡的实现代码
2021/01/13 Python
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
就业自荐信
2013/12/04 职场文书
口头翻译求职人自荐信
2013/12/07 职场文书
护士在校生自荐信
2014/02/01 职场文书
文明生主要事迹
2014/05/25 职场文书
电子信息工程自荐信
2014/05/26 职场文书
运动会入场口号
2014/06/07 职场文书
住院医师规范化培训实施方案
2014/06/12 职场文书
售房协议书
2014/08/19 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
2015秋季幼儿园开学通知
2015/07/16 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
生日祝酒词大全
2015/08/10 职场文书
AJAX学习笔记
2021/05/18 Javascript