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 学习第七课 扩展jQuery的功能 插件开发
May 17 Javascript
jQuery中animate()方法用法实例
Dec 24 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
Feb 02 Javascript
jQuery 选择符详细介绍及整理
Dec 02 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
May 30 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
Jun 27 Javascript
基于ajax和jsonp的原生封装(实例)
Oct 16 Javascript
webpack4.0打包优化策略整理小结
Mar 30 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
Jul 25 Javascript
小程序实现单选多选功能
Nov 04 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
Mar 13 jQuery
vue中使用rem布局代码详解
Oct 30 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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
关于php开启错误提示的总结
2019/09/24 PHP
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
DOM_window对象属性之--clipboardData对象操作代码
2011/02/03 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
常用DOM整理
2015/06/16 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
2019/10/31 Javascript
python从ftp下载数据保存实例
2013/11/20 Python
简单实现python画圆功能
2018/01/25 Python
python实现飞船大战
2020/04/24 Python
解决c++调用python中文乱码问题
2020/07/29 Python
Python进行统计建模
2020/08/10 Python
Django跨域请求原理及实现代码
2020/11/14 Python
html5 canvas手势解锁源码分享
2020/01/07 HTML / CSS
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
设计师个人求职信范文
2014/02/02 职场文书
学生违纪检讨书200字
2014/10/21 职场文书
画展观后感
2015/06/17 职场文书
2016新年年会主持词
2015/07/06 职场文书
2016党校培训心得体会
2016/01/07 职场文书
python unittest单元测试的步骤分析
2021/08/02 Python
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL