本文实例讲述了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./jisuanqi/date_jisuanqi
在线日期计算器/相差天数计算器:
http://tools./jisuanqi/datecalc
在线日期天数差计算器:
http://tools./jisuanqi/onlinedatejsq
在线天数计算器:
http://tools./jisuanqi/datejsq
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript时间与日期操作技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
# javascript
# 给定日期
# 返回
# 上月日期
# springmvc学习笔记-返回json的日期格式问题的解决方法
# Java Web程序中利用Spring框架返回JSON格式的日期
# JavaScript中用getDate()方法返回指定日期的教程
# js中获取时间new Date()的全面介绍
# js获取时间精确到秒(年月日)
# JS获取时间的相关函数及时间戳与时间日期之间的转换
# JS获取时间的方法
# js获取时间并实现字符串和时间戳之间的转换
# js获取时间(本周、本季度、本月..)
# JS如何获取未来n天的时间(返回日期:yyyy-mm-dd
# 并且判断是否是今天和星期)
# 给大家
# 在这里
# 会有
# 相关内容
# 基础上
# 一个月
# 遍历
# 会在
# 这个问题
# 感兴趣
# 数据结构
# 较多
# 上月
# 更多关于
# 在这种情况下
# 中都
# 所述
# 截止日期
# 关键在于
# 几款
相关文章:
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
css网站制作参考文献有哪些,易聊怎么注册?
建站之星安装失败:服务器环境不兼容?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
如何通过多用户协作模板快速搭建高效企业网站?
学校为何禁止电信移动建设网站?
建站之星如何实现网站加密操作?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
如何选择美橙互联多站合一建站方案?
Python如何创建带属性的XML节点
高性能网站服务器配置指南:安全稳定与高效建站核心方案
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
家庭服务器如何搭建个人网站?
如何彻底卸载建站之星软件?
建站之星CMS五站合一模板配置与SEO优化指南
如何有效防御Web建站篡改攻击?
如何配置FTP站点权限与安全设置?
如何快速生成凡客建站的专业级图册?
平台云上自主建站:模板化设计与智能工具打造高效网站
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
如何选择高效响应式自助建站源码系统?
如何做网站制作流程,*游戏网站怎么搭建?
如何零基础开发自助建站系统?完整教程解析
官网建站费用明细查询_企业建站套餐价格及收费标准指南
如何通过智能用户系统一键生成高效建站方案?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
一键网站制作软件,义乌购一件代发流程?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何在阿里云购买域名并搭建网站?
建站之星如何保障用户数据免受黑客入侵?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
如何做静态网页,sublimetext3.0制作静态网页?
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
音响网站制作视频教程,隆霸音响官方网站?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
如何快速生成ASP一键建站模板并优化安全性?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
如何在万网自助建站平台快速创建网站?
制作证书网站有哪些,全国城建培训中心证书查询官网?
如何快速搭建二级域名独立网站?
c# 服务器GC和工作站GC的区别和设置
建站之星如何实现PC+手机+微信网站五合一建站?
建站主机如何安装配置?新手必看操作指南
广州建站公司哪家好?十大优质服务商推荐
如何选择CMS系统实现快速建站与SEO优化?
如何选择靠谱的建站公司加盟品牌?
建站主机数据库如何配置才能提升网站性能?
*请认真填写需求信息,我们会在24小时内与您取得联系。