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 相关文章推荐
EasySlider 基于jQuery功能强大简单易用的滑动门插件
Jun 11 Javascript
jQuery老黄历完整实现方法
Jan 16 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
Aug 31 Javascript
jQuery zTree加载树形菜单功能
Feb 25 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
May 25 Javascript
星期几的不同脚本写法(推荐)
Jun 01 Javascript
AngularJS ng-app 指令实例详解
Jul 30 Javascript
Bootstrap Navbar Component实现响应式导航
Oct 08 Javascript
JS生成和下载二维码的代码
Dec 07 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
Apr 18 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
Aug 27 jQuery
微信小程序订阅消息(java后端实现)开发
Jun 01 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向socket服务器收发数据的方法
2015/01/24 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
javascript cookies 设置、读取、删除实例代码
2010/04/12 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
模拟jQuery ajax服务器端与客户端通信的代码
2011/03/28 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
JS刷新当前页面的几种方法总结
2013/12/24 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
微信小程序实现登录注册tab切换效果
2020/12/29 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
解决vue单页面应用中动态修改title问题
2019/06/09 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
vue-router跳转时打开新页面的两种方法
2019/07/29 Javascript
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
python实现探测socket和web服务示例
2014/03/28 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
Python3如何实现Win10桌面自动切换
2020/08/11 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
代码中finally中的代码会不会执行
2012/02/06 面试题
餐饮收银员岗位职责
2014/02/07 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
欠款纠纷起诉状
2015/05/19 职场文书
小学语文教师研修日志
2015/11/13 职场文书
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫
讨论nginx location 顺序问题
2022/05/30 Servers