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 相关文章推荐
纯JAVASCRIPT图表动画插件Highcharts Examples
Apr 16 Javascript
Jquery动态添加输入框的方法
May 29 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
Oct 28 Javascript
JS中Eval解析JSON字符串的一个小问题
Feb 21 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
Dec 19 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
Dec 22 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
Jan 31 Javascript
微信web端后退强制刷新功能的实现代码
Mar 04 Javascript
angularjs的单选框+ng-repeat的实现方法
Sep 12 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
Oct 22 Javascript
微信小程序中为什么使用var that=this
Aug 27 Javascript
解决layui弹出层layer的area过大被遮挡的问题
Sep 21 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
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
PHP+javascript制作带提示的验证码源码分享
2014/05/28 PHP
php解决安全问题的方法实例
2019/09/19 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
Javascript 复制数组实现代码
2009/11/26 Javascript
json-lib出现There is a cycle in the hierarchy解决办法
2010/02/24 Javascript
JavaScript 的继承
2011/10/01 Javascript
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
JS求平均值的小例子
2013/11/29 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
浅谈函数调用的不同方式,以及this的指向
2017/09/17 Javascript
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
matplotlib中legend位置调整解析
2017/12/19 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
详解Python 装饰器执行顺序迷思
2018/08/08 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
使用pth文件添加Python环境变量方式
2020/05/26 Python
英国领先的在线高尔夫商店:Scottsdale Golf
2019/08/26 全球购物
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
北京天润融通.net面试题笔试题
2012/02/20 面试题
仓管员岗位职责范文
2013/11/08 职场文书
大学学习生活感言
2014/01/18 职场文书
幼儿园国庆节活动方案
2014/02/01 职场文书
大学校务公开实施方案
2014/03/31 职场文书
学生请假条
2014/04/11 职场文书
教师工作表现评语
2014/12/31 职场文书
人事专员岗位职责
2015/02/03 职场文书
mysql中整数数据类型tinyint详解
2021/12/06 MySQL
Python+tkinter实现高清图片保存
2022/03/13 Python
postgresql中如何执行sql文件
2023/05/08 PostgreSQL