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 dialog键盘事件代码
Aug 01 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
Jul 26 Javascript
js与运算符和或运算符的妙用
Feb 14 Javascript
常规表格多表头查询示例
Feb 21 Javascript
基于jQuery实现放大镜特效
Oct 19 Javascript
新入门node.js必须要知道的概念(必看篇)
Aug 10 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
Dec 27 Javascript
javascript中json基础知识详解
Jan 19 Javascript
flexslider.js实现移动端轮播
Feb 05 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
Apr 13 Javascript
JS中cookie的使用及缺点讲解
May 13 Javascript
AngularJS 中ui-view传参的实例详解
Aug 25 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对象相互引用的内存溢出实例分析
2014/08/28 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
javascript获取web应用根目录的方法
2014/02/12 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
微信小程序实现tab切换效果
2017/11/21 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
python实现AES加密和解密
2019/03/27 Python
python mac下安装虚拟环境的图文教程
2019/04/12 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
python程序如何进行保存
2020/07/03 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
幼儿园义卖活动方案
2014/01/17 职场文书
住院医师规范化培训实施方案
2014/06/12 职场文书
大学生找工作求职信
2014/07/09 职场文书
纪委书记群众路线整改措施思想汇报
2014/10/09 职场文书
普宁寺导游词
2015/02/04 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
JS Object构造函数之Object.freeze
2021/04/28 Javascript
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android
python单向链表实例详解
2022/05/25 Python
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android