注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT国子监

 
 
 

日志

 
 
关于我

在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)

网易考拉推荐

完美解决在javascript中给定日期返回上月的日期实现(附:格式化日期方法实现)  

2013-01-08 18:02:50|  分类: JS |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在项目开发中,使用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>
  评论这张
 
阅读(307)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016