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 EasyUI API 中文文档 - EasyLoader 加载器
Sep 29 Javascript
jQuery取得select选择的文本与值的示例
Dec 09 Javascript
详解JavaScript对象和数组
Dec 03 Javascript
BootStrap和jQuery相结合实现可编辑表格
Apr 21 Javascript
从0开始学Vue
Oct 27 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
Feb 13 Javascript
JavaScript数据结构之数组的表示方法示例
Apr 12 Javascript
vue2.0+vue-dplayer实现hls播放的示例
Mar 02 Javascript
Javascript Dom元素获取和添加详解
Sep 24 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
Jul 22 Javascript
js实现鼠标滑动到某个div禁止滚动
Sep 17 Javascript
ajax jquery实现页面某一个div的刷新效果
Mar 04 jQuery
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
ASP和PHP都是可以删除自身的
2007/04/09 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
2011/09/25 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
cakephp常见知识点汇总
2017/02/24 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
js中AppendChild与insertBefore的用法详细解析
2013/12/16 Javascript
javascript如何使用bind指定接收者
2014/05/04 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
利用JavaScript的%做隔行换色的实例
2017/11/25 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
[01:09:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第一场 6.2
2018/06/04 DOTA
简洁的十分钟Python入门教程
2015/04/03 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
2020/11/09 Python
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
模范家庭事迹材料
2014/02/10 职场文书
答谢会策划方案
2014/05/12 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
党支部反对四风思想汇报
2014/10/10 职场文书
小学体育教学随笔
2015/08/14 职场文书
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python