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 相关文章推荐
如何让div span等元素能响应键盘事件操作指南
Nov 13 Javascript
javaScript实现浮点数转十六进制字符
Oct 29 Javascript
javascript获取选中的文本的方法代码
Oct 30 Javascript
如何在Angular2中使用jQuery及其插件的方法
Feb 09 Javascript
javascript深拷贝和浅拷贝详解
Feb 14 Javascript
详解vue2父组件传递props异步数据到子组件的问题
Jun 29 Javascript
微信小程序实现红包雨功能
Jul 11 Javascript
vue中监听返回键问题
Aug 28 Javascript
微信小程序常用的3种提示弹窗实现详解
Sep 19 Javascript
JavaScript代理模式原理与用法实例详解
Mar 10 Javascript
vue项目配置同一局域网可使用ip访问的操作
Oct 23 Javascript
JavaScript分页组件使用方法详解
Jul 26 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/02/26 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
php数组添加元素方法小结
2014/12/20 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
JS图片预加载 JS实现图片预加载应用
2012/12/03 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
2015/08/06 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
2016/09/26 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
小程序富文本提取图片可放大缩小
2020/05/26 Javascript
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
Python反射用法实例简析
2017/12/22 Python
django限制匿名用户访问及重定向的方法实例
2018/02/07 Python
python实现简易内存监控
2018/06/21 Python
Python3安装Pillow与PIL的方法
2019/04/03 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
深入解析神经网络从原理到实现
2019/07/26 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
python中round函数保留两位小数的方法
2020/12/04 Python
关于 HTML5 的七个传说小结
2012/04/12 HTML / CSS
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
一年级评语大全
2014/04/23 职场文书
自我评价优缺点范文
2015/03/11 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL