js日期处理

您所在的位置:网站首页 js获取前一年日期的数据 js日期处理

js日期处理

2024-06-27 05:05:35| 来源: 网络整理| 查看: 265

最近被日期弄得很头疼,由于js的月份是比较特殊的[0-11],所以在月份计算上诸多不易。特地整理了日期一些方法。

首先,以下代码均有一个共同的日期格式化函数

//日期格式化 Date.prototype.format = function(format) { 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; } 但是出现了一个很烦人的事情,就是js 在日期不满足的情况下就会自动加1个月,比如在当前时间为3月31号,传入1,1两个参数,预期结果为2月29日,但是结果输出了3月2日。就是如果不满就会溢出到下个月,后来看了api发现了setMonth有两个方法,另外一个是指定月份,指定某一天,就可以解决这个问题,并延伸了两个方法。

1.求自然月

我在网上查询到查询三个月前的方法,参照点击打开链接http://wawa129.iteye.com/blog/1766263,进行改造,js代码如下。

//求自然月日期 function getMonthBefore(timeType, num) { var date = new Date(); var retureValue = ""; if (timeType == 1) { date.setMonth(date.getMonth() - (num - 1)); //format为日期格式化函数,在下方展示 retureValue = date.format('yyyy-MM'); } if (timeType == 0) { date.setMonth(date.getMonth() - (num - 1)); retureValue = date.format('yyyy-MM-01'); } return retureValue; }

//求自然月日期 function getMonthBefore(timeType, num) { var date = new Date(); var retureValue = ""; //如果输入1至输出到月 if (timeType == 1) { date.setMonth(date.getMonth() - (num ),1); retureValue = date.format('yyyy-MM'); } if (timeType == 0) { date.setMonth(date.getMonth() - (num ),1); retureValue = date.format('yyyy-MM-01'); } // alert(retureValue); return retureValue; } //求自然月日期,添加日期格式化符号 function getMonthBeforeFormat(timeType, num,format) { var date = new Date(); var retureValue = ""; if (timeType == 1) { date.setMonth(date.getMonth() - (num ),1); retureValue = date.format('yyyy'+format+'MM'); } if (timeType == 0) { date.setMonth(date.getMonth() - (num ),1); retureValue = date.format('yyyy'+format+'MM'+format+'01'); } return retureValue; } //求自然月日期,添加日期格式化符号,指定某一天 function getMonthBeforeFormatAndDay(timeType, num,format,day) { var date = new Date(); var retureValue = ""; if (timeType == 1) { date.setMonth(date.getMonth() - (num ),1); retureValue = date.format('yyyy'+format+'MM'); } if (timeType == 0) { date.setMonth(date.getMonth() - (num ),1); //读取日期自动会减一,所以要加一 var mo=date.getMonth()+1; //判断如果傻叉的非得传某一天大于月份最大日期就自动赋值最后一天 if(mo==4||mo==6||mo==9||mo==11){ if(day>30){ day=30 } }else if(mo==2){ if( isLeapYear(date.getFullYear())){ if(day>29){ day=29 }else{ day=28 } } }else{ if(day>31){ day=31 } } retureValue = date.format('yyyy'+format+'MM'+format+day); } return retureValue; } 2.获取月末

有两种方法

//获取当月最后一天日期 function getLastDay(year,month) { var new_year = year; //取当前的年份 var new_month = month++;//取下一个月的第一天,方便计算(最后一天不固定) if(month>12) { new_month -=12; //月份减 new_year++; //年份增 } var new_date = new Date(new_year,new_month,1); //取当年当月中的第一天 return (new Date(new_date.getTime()-1000*60*60*24)).getDate();//获取当月最后一天日期 } /**求月末 yyyy-mm-dd * * @param _month * @returns */ function getMonthEndDay(_month) { var date = new Date(); var day=01; var year1 = _month.substr(0,4); var month1 = _month.substr(5,2); date.setYear(year1); date.setMonth(month1-1); //读取日期自动回减一 var mo=date.getMonth()+1; if(mo==4||mo==6||mo==9||mo==11){ day=30 }else if(mo==2){ if( isLeapYear(date.getFullYear())){ day=29 }else{ day=28 } }else{ day=31 } date.setDate(parseInt(day)); return date.format('yyyy-MM-dd'); } 3.获取前后天数

function GetDateStr(AddDayCount) { var dd = new Date(); dd.setDate(dd.getDate()+AddDayCount);//获取AddDayCount天后的日期 var y = dd.getFullYear(); var m = dd.getMonth()+1;//获取当前月份的日期 var d = dd.getDate(); return dd.format('yyyy-MM-dd'); } 4.获取当前日期YYYY MM DD

//获取当前日期YYYY MM DD function getNowDate(format) { var now = new Date() y = now.getFullYear() m = now.getMonth() + 1 d = now.getDate() m = m < 10 ? "0" + m : m d = d < 10 ? "0" + d : d return y + format + m + format + d } 5.判断是否为闰年

//JS判断闰年代码 function isLeapYear (Year) { if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) { return (true); } else { return (false); } } 代码均做了基本的测试,刚开始写博客,如果出现bug的请多多指教,也希望大家如果有好的处理日期的代码也能共享!谢谢大家!



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭