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 相关文章推荐
初学js 新节点的创建 删除 的步骤
Jul 04 Javascript
js判断为空Null与字符串为空简写方法
Feb 24 Javascript
JavaScript中的函数(二)
Dec 23 Javascript
JavaScript对象数组排序实例方法浅析
Jun 15 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
Jan 20 Javascript
AngularJs定时器$interval 和 $timeout详解
May 25 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
Aug 15 Javascript
JavaScript中Array方法你该知道的正确打开方法
Sep 11 Javascript
这应该是最详细的响应式系统讲解了
Jul 22 Javascript
详解Webpack抽离第三方类库以及common解决方案
Mar 30 Javascript
JS获取当前时间戳方法解析
Aug 29 Javascript
如何优化vue打包文件过大
Apr 13 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
php读取数据库信息的几种方法
2008/05/24 PHP
php获取某个目录大小的代码
2008/09/10 PHP
PHP函数strip_tags的一个bug浅析
2014/05/22 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
PHP实现简单数字分页效果
2015/07/26 PHP
php正则修正符用法实例详解
2016/12/29 PHP
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
PHP PDO操作总结
2014/11/17 Javascript
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
2017/03/04 Javascript
jQuery中的deferred对象和extend方法详解
2017/05/08 jQuery
jquery实现图片轮播器
2017/05/23 jQuery
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
详解extract-text-webpack-plugin 的使用及安装
2018/06/12 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
django批量导入xml数据
2016/10/16 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
python修改字典键(key)的方法
2019/08/05 Python
python中eval与int的区别浅析
2019/08/11 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
网站性能延迟加载图像的五种技巧(小结)
2020/08/13 HTML / CSS
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
职工运动会邀请函
2014/01/19 职场文书
寒假实习自荐信
2014/01/26 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python
html粘性页脚的具体使用
2022/01/18 HTML / CSS