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 select选中的一个小问题
Oct 11 Javascript
Dojo 学习笔记入门篇 First Dojo Example
Nov 15 Javascript
仿新浪微博登陆邮箱提示效果的js代码
Aug 02 Javascript
javascript 数组的正态分布排序的问题
Jul 31 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
Nov 29 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
Dec 22 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
Jan 07 Javascript
在 React、Vue项目中使用SVG的方法
Feb 09 Javascript
如何制作一个Node命令行图像识别工具
Dec 12 Javascript
一些可能会用到的Node.js面试题
Jun 15 Javascript
React+Redux实现简单的待办事项列表ToDoList
Sep 29 Javascript
Webpack5正式发布,有哪些新特性
Oct 12 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+mysql留言本源码
2009/11/11 PHP
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
PHP实现克鲁斯卡尔算法实例解析
2014/08/22 PHP
Smarty保留变量用法分析
2016/05/23 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
jquery的ajax简单结构示例代码
2014/02/17 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
2014/06/13 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
js点击选择文本的方法
2015/02/09 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
2018/03/14 Javascript
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
windows下Virtualenvwrapper安装教程
2017/12/13 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
python操作excel的方法
2018/08/16 Python
python标记语句块使用方法总结
2019/08/05 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
数学专业推荐信范文
2013/11/21 职场文书
元旦晚会上单位领导演讲稿
2014/01/05 职场文书
垃圾桶标语
2014/06/24 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
2014年统战工作总结
2014/12/09 职场文书
瘦西湖导游词
2015/02/03 职场文书
导游词之四川武侯祠
2019/10/21 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js