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 相关文章推荐
JS中的prototype与面向对象的实例讲解
May 22 Javascript
javascript学习笔记(六)数据类型和JSON格式
Oct 08 Javascript
node.js超时timeout详解
Nov 26 Javascript
简介JavaScript中toTimeString()方法的使用
Jun 12 Javascript
javascript处理a标签超链接默认事件的方法
Jun 29 Javascript
js实现的二分查找算法实例
Jan 21 Javascript
利用Node.js制作爬取大众点评的爬虫
Sep 22 Javascript
JS正则表达式修饰符global(/g)用法分析
Dec 27 Javascript
解决vue打包之后静态资源图片失效的问题
Feb 21 Javascript
JS使用setInterval实现的简单计时器功能示例
Apr 19 Javascript
vue实现重置表单信息为空的方法
Sep 29 Javascript
小程序自动化测试的示例代码
Aug 11 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上传文件中文文件名乱码的解决方法
2013/11/01 PHP
php实现把数组按指定的个数分隔
2014/02/17 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
PHP中使用mpdf 导出PDF文件的实现方法
2018/10/22 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
2015/04/15 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
js图片卷帘门导航菜单特效代码分享
2015/09/10 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
详解react-router如何实现按需加载
2017/06/15 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
Python中的XML库4Suite Server的介绍
2015/04/14 Python
Python求解任意闭区间的所有素数
2018/06/10 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
实习生评语
2014/04/26 职场文书
中央空调节能方案
2014/06/15 职场文书
销售人员工作自我评价
2014/09/21 职场文书
财务工作检讨书
2014/10/29 职场文书
2015年宣传部部长竞选演讲稿
2014/11/28 职场文书
大学生暑期实践报告
2015/07/13 职场文书
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
centos8安装MongoDB的详细过程
2021/10/24 MongoDB