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 相关文章推荐
IE8 原生JSON支持
Apr 13 Javascript
jquery里的each使用方法详解
Dec 22 Javascript
js onmousewheel事件多次触发问题解决方法
Oct 17 Javascript
JavaScript检测鼠标移动方向的方法
May 22 Javascript
用window.onerror捕获并上报Js错误的方法
Jan 27 Javascript
jQuery遍历DOM节点操作之filter()方法详解
Apr 14 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
Jun 21 Javascript
angular.js分页代码的实例
Jul 27 Javascript
整理关于Bootstrap导航的慕课笔记
Mar 29 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
Oct 20 Javascript
vue.js中使用echarts实现数据动态刷新功能
Apr 16 Javascript
nestjs返回给前端数据格式的封装实现
Feb 22 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
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
关于页面优化和伪静态
2009/10/11 PHP
php设计模式 Adapter(适配器模式)
2011/06/26 PHP
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
PHP中模拟处理HTTP PUT请求的例子
2014/07/22 PHP
php上传图片获取路径及给表单字段赋值的方法
2016/01/23 PHP
动态加载iframe
2006/06/16 Javascript
Extjs学习笔记之二 初识Extjs之Form
2010/01/07 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
微信小程序实现列表下拉刷新上拉加载
2020/07/29 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
2020/02/06 Javascript
Python实现遍历数据库并获取key的值
2015/05/17 Python
python执行子进程实现进程间通信的方法
2015/06/02 Python
用Python解决计数原理问题的方法
2016/08/04 Python
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
HTML5之多线程(Web Worker)
2019/01/02 HTML / CSS
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
设计师珠宝:Ylang 23
2018/05/11 全球购物
网络工程系信息安全技术专业大学生求职信
2013/10/22 职场文书
毕业生就业自荐信
2013/12/04 职场文书
银行办理业务介绍信
2014/01/18 职场文书
金融管理应届生求职信
2014/02/20 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
工商管理自荐书
2014/07/06 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
个人总结与自我评价
2015/02/14 职场文书
导游词之江苏同里古镇
2019/11/18 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python