关于日期的常见操作
http://community.csdn.net//Expert/TopicView2.asp?id=4360247&datebasetype=now
js FAQ贴
http://community.csdn.net//Expert/TopicView2.asp?id=4356360&datebasetype=now
DHTML手册,js手册,dom手册下载
http://community.csdn.net//Expert/TopicView2.asp?id=4356325&datebasetype=now
综合整理之后的PowerDate .方便处理常日公历日期操作.
<script language="JavaScript">
<!--
function PowerDate(){
/* 名称: PowerDate
* 版本: v Beta 1.0
* 作者: 梅雪香(meixx)
* 说明: PowerDate 基本实现了较常见的对于日期的操作,但不包括农历.
* 注意: 您可以随意复制此
程序
,请保留该说明.您可以随意更改此程序,如发现有BUG或者有改进请
* mail给我一份,我的E-mail:wy_hd@163.com 或者在CSDN给我留言,我的ID是:zhaoxiaoyang
*/
//日期对象
this.date=null;
//格式化时是否加零补位标志,默认为不加零false
this.isFmtZero=false;
this.weekArr=[["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],
["SUN","MON","TUR","WED","THU","FRI","SAT"]];
this.monthArr=["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"];
//初始化日期对象
switch(arguments.length){
case 0:
this.date = new Date();
break;
case 1:
//如果为日期类型
if(typeof(arguments[0]) == "object" && (/Date/.test(arguments[0].constructor))){
this.date = arguments[0];
}else{//字符串类型或者毫秒数
var reg = /^(/d{2,4})/D+(/d{1,2})/D+(/d{1,2})$/;
var str = arguments[0].replace(//s/g,"");
str = str.replace(reg,"$1/$2/$3");
this.date = new Date(str);
}
break;
case 2: //年月----此时初始化为年月的1号
this.date = new Date(arguments[0],arguments[1]-1,1);
break;
case 3: //年月日
this.date = new Date(arguments[0],arguments[1]-1,arguments[2]);
break;
case 6: //年月日时分秒
this.date = new Date(arguments[0],arguments[1]-1,arguments[2],arguments[3],arguments[4],arguments[5]);
break;
case 7: //年月日时分秒毫秒
this.date = new Date(arguments[0],arguments[1]-1,arguments[2],arguments[3],arguments[4],arguments[5],arguments[6]);
break;
default: this.date = new Date("1970/1/1"); break;
}
//初始化失败处理
if(typeof(this.date) != "object" || !(/Date/.test(this.date.constructor)))
throw (new Error(-1, '构造PowerDate
方法
失败,检查输入参数!'));
this.getDate = function (){
return this.date;
}
this.getFullYear=function(){
return this.date.getFullYear();
};
this.getYear=function(){
return this.date.getYear();
};
this.getMonth=function(){
return this.frmWithZero(this.date.getMonth()+1);
};
this.getDay=function(){
return this.frmWithZero(this.date.getDate());
};
this.getHour=function(){
return this.frmWithZero(this.date.getHours());
};
this.getMinute=function(){
return this.frmWithZero(this.date.getMinutes());
};
this.getSecond=function(){
return this.frmWithZero(this.date.getSeconds());
};
this.getMillisecond=function(){
var ss=this.date.getMilliseconds();
if(this.isFmtZero==true && ss<10)
return "00"+ss;
else if(this.isFmtZero==true && ss<100)
return "0"+ss;
else return ss;
};
this.getWeek=function(){
return this.date.getDay();
};
this.setIsFmtZero=function(val){
this.isFmtZero=val;
};
this.frmWithZero = function(num){
if(this.isFmtZero==true && num<10)
return "0"+num;
else return num;
}
/*
*
功能
:根据输入表达式返回日期字符串
* 参数:dateFmt:字符串,由以下结构组成
* yy:长写年,YY:短写年mm:数字月,MM:英文月,dd:日,hh:时,
* mi:分,ss秒,ms:毫秒,we:汉字星期,WE:英文星期.
*/
this.getString=function(dateFmt){
if(typeof(dateFmt) != "string" )
throw (new Error(-1, 'getString()方法需要字符串类型参数!'));
var str=dateFmt;
str=str.replace(/yy/g,this.getFullYear());
str=str.replace(/YY/g,this.getYear());
str=str.replace(/mm/g,this.getMonth());
str=str.replace(/MM/g,this.monthArr[this.getMonth()-1]);
str=str.replace(/dd/g,this.getDay());
str=str.replace(/hh/g,this.getHour());
str=str.replace(/mi/g,this.getMinute());
str=str.replace(/ss/g,this.getSecond());
str=str.replace(/ms/g,this.getMillisecond());
str=str.replace(/we/g,this.weekArr[0][this.getWeek()]);
str=str.replace(/WE/g,this.weekArr[1][this.getWeek()]);
return str;
};
/* 功能 : 返回与某日期相距N天(N个24小时)的日期
* 参数 : num number类型 可以为正负整数或者浮点数,默认为1;
* type 0(秒) or 1(天),默认为秒
* 返回 : 新的PowerDate类型
*/
this.dateAfter=function(num,type){
num = (num == null?1:num);
if(typeof(num)!="number") throw new Error(-1,"dateAfterDays(num)参数为数值类型.");
var iType = (type==null?0:type);
var arr = [1000,86400000];
var dd = this.date.valueOf();
dd += num*arr[type];
this.date=new Date(dd);
return this;
};
//判断是否是闰年,返回true 或者 false
this.isLeapYear = function (){
var year = this.getFullYear();
return (0==year%4 && ((year % 100 != 0)||(year % 400 == 0)));
};
//返回该月天数
this.getDaysOfMonth = function (){
return (new Date(this.getFullYear(),this.getMonth(),0)).getDate();
};
//转换成大写日期(中文)
this.getChinaDate = function(){
var year = this.getFullYear();
var month= this.getMonth();
var day = this.getDay();
var arrNum = ["零","一","二","三","四","五","六","七","八","九","十","十一","十二"];
var strTmp="";
for(var i=0,j=year.length;i<j;i++){
strTmp += arrNum[year.charAt(i)];
}
strTmp += "年";
strTmp += arrNum[month]+"月";
if(day<10)
strTmp += arrNum[day];
else if (day <20)
strTmp += "十"+arrNum[day-10];
else if (day <30 )
strTmp += "二十"+arrNum[day-20];
else
strTmp += "三十"+arrNum[day-30];
strTmp += "日";
return strTmp;
};
//日期比较函数,参数为pd类型如this日期晚于参数:1,相等:0 早于: -1
this.dateCompare = function(pd){
if(typeof(pd) != "object" || pd.toString() != "PowerDate")
throw new Error(-1,"dateCompare(pd)的pd参数为PowerDate类型.");
var d = this.date.getTime() - pd.getDate().getTime();
return d>0?1:(d==0?0:-1);
}
/*功能:返回两日期之差
*参数:pd PowerDate对象
* type: 返回类别标识.yy:年,mm:月,ww:周,dd:日,hh:小时,mi:分,ss:秒,ms:毫秒
* intOrFloat :返回整型还是浮点型值 0:整型,不等于0:浮点型
* output : 输出
提示
,如:时间差为#周!
*/
this.calDateDistance = function (pd,type,intOrFloat,output){
if(typeof(pd) != "object" || pd.toString() != "PowerDate")
throw new Error(-1,"calDateDistance(pd,type,intOrFloat)的pd参数为PowerDate类型.");
if(!((new RegExp(type+",","g")).test("yy,mm,ww,dd,hh,mi,ss,ms,")))
throw new Error(-1,"calDateDistance(pd,type,intOrFloat,output)的type参数为非法.");
var iof = (intOrFloat==null?0:intOrFloat);
var miSecMain = this.date.valueOf();
var miSecSub = pd.getDate().valueOf();
var num=0;
switch(type){
case "yy": num = this.getFullYear() - pd.getFullYear(); break;
case "mm": num = (this.getFullYear() - pd.getFullYear())*12+this.getMonth()-pd.getMonth(); break;
case "ww": num = this.fmtRtnVal((miSecMain-miSecSub)/7/86400000,iof); break;
case "dd": num = this.fmtRtnVal((miSecMain-miSecSub)/86400000,iof); break;
case "hh": num = this.fmtRtnVal((miSecMain-miSecSub)/3600000,iof); break;
case "mi": num = this.fmtRtnVal((miSecMain-miSecSub)/60000,iof); break;
case "ss": num = this.fmtRtnVal((miSecMain-miSecSub)/1000,iof); break;
case "ms": num = (miSecMain-miSecSub);break;
default: break;
}
if(output)
return output.replace(/#/g,num);
else return num;
};
//返回整数或者两位小数的浮点数
this.fmtRtnVal = function (val,intOrFloat){
//alert(val);
return (intOrFloat == 0 ? Math.floor(val) : parseInt(val*100)/100);
};
//重载toString 方法,用来判断是否为PowerDate对象
this.toString=function(){ return "PowerDate"};
}
var d= new PowerDate(new Date());//实例化一个PowerDate对象
d.setIsFmtZero(true);//设置为用0补位输出
//alert(d.getString("yy-mm-dd hh:mi:ss.ms"));
//alert(d.getString("ms.ss:mi:hh dd-mm-yy"));
alert(d.calDateDistance(new PowerDate("2005/5/31"),"dd"));//输出日期字符串
//-->
</script>
常在js版转,发现有很多问题问来问去N多遍.于是有这个想法,把常见的问题汇总成一个贴子.
我个人所拥有的代码相当有限,所以要大家群策群力共同来维护这个帖子.
回帖时注意:
请先查看前面回帖,已经避免发过的东西重复发布.
尽可能一次性尽可能多的贴代码,不要帖子很长但内容很少.
要加比较明朗的注释,不要让人望而怯步,不知所云.
如果该贴有较好的效应,请大梅同志开恩置顶.
JS 对 cookie 操作
function setCookie(name,value)
{
var Days = 30; //此 cookie 将被保存 30 天
var exp = new Date(); //new Date("December 31, 9998");
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape(value) +";expires="+ exp.toGMTString();
}
function getCookie(name)
{
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) return unescape(arr[2]); return null;
}
function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null) document.cookie=name +"="+cval+";expires="+exp.toGMTString();
}
<script type="text/javascript">
var _st = window.setTimeout;
/*重载window.setTimeout函数,引用的函数可以带参数*/
window.setTimeout = function(fRef, mDelay) {
if(typeof fRef == 'function'){
var argu = Array.prototype.slice.call(arguments,2);
alert(typeof(argu));
var f = (function(){ fRef.apply(null, argu); });
return _st(f, mDelay);
}
return _st(fRef,mDelay);
}
function test(x){
alert(x);
}
window.setTimeout(test,3000,'fason');
</script>
<script language=javascript>
<!--
/*@cc_on @*/
/*@if (@_win32 && @_jscript_version>=5)
function window.confirm(str)
{
str=str.replace(//'/g, "'&chr(39)&'").replace(//r/n|/n|/r/g, "'&VBCrLf&'");
execScript("n = msgbox('"+ str +"', 257, '自定的的 confirm')", "vbscript");
return(n==1);
}
@end @*/
alert(confirm('sure?'));
// -->
</script>
//两端去空格函数
function trim(str) {
return str.replace(/(^/s*)|(/s*$)/g,"");
}
<script>
//为Number增加length方法
Number.prototype.length = function()
{
return String(this).length;
}
alert((11).length())
</script>
Ms XmlDom 异步装载Xml文件
放在这里,算作是资源备份吧。
<script>
var xmldoc;
function Load(){
xmldoc = new ActiveXObject("Msxml2.DOMDocument");
xmldoc.onreadystatechange = CheckState;
xmldoc.resolveExternals = false;
xmldoc.load(URL.value);
}
function CheckState(){
var state = xmldoc.readyState;
RESULTS.innerHTML += "加载状态 = " + state + "<BR>"
if (state == 4){
var err = xmldoc.parseError;
if (err.errorCode != 0)
RESULTS.innerHTML += err.reason + "<BR>"
else
{
RESULTS.innerHTML += "加载成功。" + "<BR>"
alert(xmldoc.xml)
}
}
}
</script>
URL: <input type=text size=60 id=URL value="http://dotnet.aspx.cc/Rss.aspx">
<input type=button value="正在XML" οnclick="Load()">
<div id=RESULTS style="color:red; font-weight:bold;"></div></script>
//带中文字符串长度,一个中文字长度为2
String.prototype.lenB = function(){return this.replace(/[^/x00-/xff]/g,"**").length;}
document.all.tes1.value.lenB();
预判断一下链接URL是否可用
<script language="javascript">
function getURL(url)
{
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET",url,false);
xmlhttp.send();
if (xmlhttp.readyState==4)
alert((xmlhttp.Status==200)?"存在":"不存在");
}
//user like this:
getURL("http://localhost/1.asp")
</script>
//将数字转换成三位逗号分隔的样式
function formatNum(s)
{
if(!/^(/+|-)?/d+(/./d+)?$/.test(num)){alert("wrong!"); return num;}
var re = new RegExp().compile("(//d)(//d{3})(,|//.|$)");
num += ""; while(re.test(num))
num = num.replace(re, "$1,$2$3")
return num;
}
alert(formatNum(-12345678.123));
alert(formatNum("12345678.123"));
alert(formatNum("10000000000000000000000000000000000000000"));
格式化日期:yyyy-m-d to yyyy-mm-dd
<SCRIPT LANGUAGE="JavaScript">
<!--
var str = "2005-3-2"; //2005-03-02
var str = "2005-3-22"; //2005-03-02
str = str.replace(/(/D)(/d)(?=/D|$)/g, "$10$2");
alert(str);
//-->
</SCRIPT>
表格中的行删除功能,用checkbox选择的
<script language="JavaScript">
<!--
var curRow=null;
function selectRow(tr1){
if(curRow)
curRow.bgColor="#FFFFFF";
tr1.bgColor="e7e7e7";
curRow=tr1;
}
function delTr(){
var chks=document.getElementsByName("chkDelete");
var tb=document.getElementById("tbContent");
for(var i=chks.length-1;i>=0;i--){
if(chks[i].checked){
tb.deleteRow(i);
}
}
}
//-->
</script>
<div align="center" style="overflow:auto; width:400; height:300px " id="divVector">
<table id="tbContent" border=1 width="300">
<script language="JavaScript">
<!--
for(var i=0;i<25;i++)
document.write('<tr height=20 οnmοuseοver="selectRow(this)"><td algin="center"
width="20%"><input type="checkbox" name="chkDelete"></td><td width="80%"
align="center">'+i+'</td></tr>');
//-->
</script>
</table>
</div>
<input type="button" value=" 删除选中的行 " οnclick="delTr()">
yyyy-mm-dd格式日期完整校验加
提示
<script language="JavaScript">
<!--
function CheckDate(strDate){
var reg=/^(/d{4})([-])(/d{2})([-])(/d{2})/;
if(!reg.test(strDate)){
alert("日期格式不正确!/n正确格式为:2004-01-01");
return false;
}
var ss=strDate.split("-");
var year=ss[0];
var month=ss[1];
var date=ss[2];
if(!checkYear(year)){return false;}
if(!checkMonth(month)){return false;}
if(!checkDate(year,month,date)){return false;}
return true;
}
function checkYear(year){
if(isNaN(parseInt(year))){alert("年份输入有误,请重新输入!"); return false;}
else if(parseInt(year)<1950 || parseInt(year) >2050){ alert("年份应该在1950-2050之间
!"); return false}
else return true;
}
function checkMonth(month){
if(isNaN(parseInt(month))){alert("月份输入有误,请重新输入!"); return false;}
else if(parseInt(month)<1 || parseInt(month) >12){ alert("月份应该在1-12之间!");
return false}
else return true;
}
function checkDate(year,month,date){
var daysOfMonth=CalDays(parseInt(year),parseInt(month));
if(isNaN(parseInt(date))){alert("日期输入有误,请重新输入!"); return false;}
else if(parseInt(date)<0||parseInt(date)>daysOfMonth){ alert("日期应该在1
-"+daysOfMonth+"之间!"); return false;}
else return true;
}
function CalDays(year,month){
var date= new Date(year,month,0);
return date.getDate();
}
function isLeapYear(year){
if((year %4==0 && year %100!=0) || (year %400==0)) return true;
else return false;
}
alert(CheckDate("2007-02-29"));
//-->
</script>
<script language="JavaScript">
<!--
/* 函数名称 : dateAfterDays
* 函数功能 : 返回与某日期相距N天(N个24小时)的日期
* 函数参数 : num number类型 可以为正负整数或者浮点数
* 函数返回 : 新的日期
* 调用方法 : dateObject.dateAfterDays(num);
*/
Date.prototype.dateAfterDays=function(num){
if(typeof(num)!="number") throw new Error("Date(num)参数为数值类型.",-1);
var date = this.valueOf();
date += num*24*3600*1000;
return new Date(date);
}
var dd= new Date();
alert(dd.dateAfterDays(1.5));
//-->
</script>
类似CSDN感兴趣社区配置页面中的checkbox选择的功能
<script language="JavaScript">
<!--
function chkClk(obj){
var chks=document.getElementsByName(obj.name);
if(obj.flag=="main"){
for(var i=1;i<chks.length;i++)
chks[i].checked=obj.checked;
}
else{
for(var i=1;i<chks.length;i++)
if(chks[i].checked==false){
chks[0].checked=false;
break;
}
else{
if(i==chks.length-1) chks[0].checked=true;
}
}
}
//-->
</script>
<input type="checkbox" οnclick="chkClk(this)" name="type1" flag="main">typetext
<li><input type="checkbox" οnclick="chkClk(this)" name="type1">typetext</li>
<li><input type="checkbox" οnclick="chkClk(this)" name="type1">typetext</li>
<br><br>
<input type="checkbox" οnclick="chkClk(this)" name="type2" flag="main">typetext
<li><input type="checkbox" οnclick="chkClk(this)" name="type2">typetext</li>
<li><input type="checkbox" οnclick="chkClk(this)" name="type2">typetext</li>
JS时间处理
时间对象是一个我们经常要用到的对象,无论是做时间输出、时间判断等操作时都与这个对象离不开。除开JavaScript中的时间对象外,在VbScript中也有许多的时间对象,而且非常好用。下面还是按照我们的流程来进行讲解。
它是一个内置对象——而不是其它对象的属性,允许用户执行各种使用日期和时间的过程。
方法:分为得到时间方法、设置时间方法和转换时间方法
得到时间方法:
getDate() 查看Date对象并返回日期
getDay() 返回星期几
getHours() 返回小时数
getMinutes() 返回分钟数
getMonth() 返回月份值
getSeconds() 返回秒数
getTime() 返回完整的时间
getYear() 返回年份
设置时间方法:
setDate() 改变Date对象的日期
setHours() 改变小时数
setMinutes() 改变分钟数
setMonth() 改变月份
setSeconds() 改变秒数
setTime() 改变完整的时间
setYear() 改变年份
转换时间方法:
toGMTString() 把Date对象的日期(一个数值)转变成一个GMT时间字符串,返回类似下面的值:Weds,15 June l997 14:02:02 GMT(精确的格式依赖于计算机上所运行的操作系统而变)
toLocaleString() 把Date对象的日期(一个数值)转变成一个字符串,使用所在计算机上配置使用的特定日期格式
UTC() 使用Date UTC(年、月、日、时、分、秒),以自从1970年1月1日00:00:00(其中时、分、秒是可选的)以来的毫秒数的形式返回日期
几个需要注意的地方:
1、得到日期和年和设置日期和年时间,其中很怪的问题就是不能对月份进行设置(比较的怪):
<script language="javascript">
d = new Date();
alert(d.toLocaleString());
d.setDate(25);
alert(d.toLocaleString());
d.setYear(2000);
alert(d.toLocaleString());
</script>
2、获得年的时候最好用getFullYear()方法来做
3、由于针对月份,JS是从0开始的,因此需要对月份进行操作时要加1
下面是几个关于时间的经典而且经常会用到的例子,希望对大家会有提高的。谢谢继续关注该帖子。。。
1、将2005-8-5转换成2005-08-05格式
<script language="javascript">
var strDate = '2005-8-5';
window.alert(strDate.replace(//b(/w)/b/g, '0$1'));
</script>
2、得到间隔天数
<script type="text/javascript">
<!--
alert("间隔天数为:"+(new Date('2005/8/15')-new Date('2003/9/18'))/1000/60/60/24+"天")
//-->
</script>
3、得到间隔时间
<script>
var d1=new Date("2004/09/16 20:08:00");
var d2=new Date("2004/09/16 10:18:03");
var d3=d1-d2;
var h=Math.floor(d3/3600000);
var m=Math.floor((d3-h*3600000)/60000);
var s=(d3-h*3600000-m*60000)/1000;
alert("相差"+h+"小时"+m+"分"+s+"秒");
</script>
4、得到今天的日期
<script language="javascript">
d = new Date();
alert(d.getFullYear()+"年"+(d.getMonth()+1)+"月"+d.getDate()+"日");
</script>
6、数字日期转汉字
<html>
<head>
<title> New Document </title>
</head>
<body>
<script language=javascript>
Date.prototype.getRead = function()
{
var values = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九");
var returnValue, temp;
returnValue = this.getYear()+"年";
temp = (this.getMonth()+1)+"月"+this.getDate()+"日";
temp = temp.replace(/(/d)(/d)/g,"$1十$2").replace(/1十/g,"十").replace(/十0/g,"十");
returnValue += temp;
returnValue = returnValue.replace(//d/g, function(sts){return values[parseInt(sts)]});
return returnValue;
}
var t=new Date();
document.write(t.getRead());
</script>
</body>
</html>
7、得到前N天或后N天的日期
方法一:
<script type="text/javascript">
function showdate(n)
{
var uom = new Date(new Date()-0+n*86400000);
uom = uom.getFullYear() + "-" + (uom.getMonth()+1) + "-" + uom.getDate();
return uom;
}
window.alert("今天是:"+showdate(0));
window.alert("昨天是:"+showdate(-1));
window.alert("明天是:"+showdate(1));
window.alert("10天前是:"+showdate(-10));
window.alert("5天后是:"+showdate(5));
</script>
方法二:
<script type="text/javascript">
function showdate(n)
{
var uom = new Date();
uom.setDate(uom.getDate()+n);
uom = uom.getFullYear() + "-" + (uom.getMonth()+1) + "-" + uom.getDate();
return uom;
}
window.alert("今天是:"+showdate(0));
window.alert("昨天是:"+showdate(-1));
window.alert("明天是:"+showdate(1));
window.alert("10天前是:"+showdate(-10));
window.alert("5天后是:"+showdate(5));
</script>
方法三(不好意思,这个市用vsscript做的):
<script language="vbscript">
function showdate(n)
showdate=dateadd("d",date(),n)
end function
msgbox "今天是:"&showdate(0)
msgbox "昨天是:"&showdate(-1)
msgbox "明天是:"&showdate(1)
msgbox "十天前是:"&showdate(-10)
msgbox "五天后是:"&showdate(5)
</script>
方法四:
<script language="Javascript">
Date.prototype.getDays=function(){
var _newDate=new Date();
_newDate.setMonth(_newDate.getMonth()+1);
_newDate.setDate(0);
$_days=_newDate.getDate();
delete _newDate;
return $_days;
}
function showdate(n)
{
var uom = new Date();
uom.setDate(uom.getDate()+n);
uom = uom.getFullYear() + "-" + (uom.getMonth()+1) + "-" + uom.getDate()+"/n星期"+('天一二三四五六'.charAt(uom.getDay()))+"/n本月有"+ uom.getDays()+"天";
return uom;
}
window.alert("今天是:"+showdate(0));
window.alert("昨天是:"+showdate(-1));
window.alert("明天是:"+showdate(1));
window.alert("10天前是:"+showdate(-10));
window.alert("5天后是:"+showdate(5));
</script>
-------------------------------------------------------------------- DWASearch Form JS header function SetValue() { var todays = new Date(); var years = todays.getFullYear(); var lastyears=years-1; var months = todays.getMonth()+1; var mdays = todays.getDate(); var endDates = years + "-" + months + "-" + mdays; /endDates var stDates = lastyears + "-" + months + "-" + mdays; /stDates document.all.endDate.value=endDates; document.all.startDate.value=stDates; var pasttwoyears=years-2; var pasttwoyeardate=pasttwoyears+ "-" + months + "-" + mdays; var pastthreeyears=years-3; var pastthreeyeardate=pastthreeyears+ "-" + months + "-" + mdays; document.all.Today.value=endDates; document.all.Lasttwelvemonths.value=stDates; document.all.Pasttwoyear.value=pasttwoyeardate; document.all.Pastthreeyear.value=pastthreeyeardate; //last week function showdate(n) { var uom = new Date(new Date()-0+n*86400000); uom = uom.getFullYear() + "-" + (uom.getMonth()+1) + "-" + uom.getDate(); return uom; } document.all.PastWeek.value=showdate(-7); // .Lastthreemonths. Lastsixmonths function makeArray() { for (i = 0; i=beforedaycount){//如果本月天数大于前一个月 if(today.getDate()>=beforedaycount){//如果当前的天数大于上个月的天数,那么上个月返回末 before.setDate(beforedaycount); } else{//否则返回上个月相同号数的一天 before.setDate(today.getDate()); } } else{ if(today.getDate() == todaydaycount){//如果到了本月末尾,返回上月的最后一天 before.setDate(beforedaycount); } else{ before.setDate(today.getDate())//否则返回上个月相同号数的一天 } } return before; } } /* Date.prototype.addMonth = function(num){if(!isNaN(num))this.setMonth(this.getMonth() + parseInt(num));return this;} //创建date var datedd = new Date(); //date.addMonth(1);//加1个月 //date.addMonth(10);//加10个月 //date.addMonth(-1);//减1个月 document.all.Lastthreemonths.value=datedd.addMonth(-3); document.all.Lastsixmonths.value=datedd.addMonth(-3); function getNextYear() { var d = new Date(); return new Date(d.getFullYear(),d.getMonth()-1,d.getDate()); } function makeArray() { for (i = 0; i
===================again==============================
function SetValue()
{
var todays = new Date();
var years = todays.getFullYear();
var lastyears=years-1;
var months = todays.getMonth()+1;
var mdays = todays.getDate();
var endDates = years + "-" + months + "-" + mdays; /endDates
var stDates = lastyears + "-" + months + "-" + mdays; /stDates
document.all.endDate.value=endDates;
document.all.startDate.value=stDates;
var pasttwoyears=years-2;
var pasttwoyeardate=pasttwoyears+ "-" + months + "-" + mdays;
var pastthreeyears=years-3;
var pastthreeyeardate=pastthreeyears+ "-" + months + "-" + mdays;
document.all.Today.value=endDates;
document.all.Lasttwelvemonths.value=stDates;
document.all.Pasttwoyear.value=pasttwoyeardate;
document.all.Pastthreeyear.value=pastthreeyeardate;
//last week
function showdate(n)
{
var uom = new Date(new Date()-0+n*86400000);
uom = uom.getFullYear() + "-" + (uom.getMonth()+1) + "-" + uom.getDate();
return uom;
}
document.all.PastWeek.value=showdate(-7);
// .Lastthreemonths. Lastsixmonths
function makeArray() {
for (i = 0; i<makeArray.arguments.length; i++)
this[i + 1] = makeArray.arguments[i];
}
var months = new makeArray('1','2','3','4',
'5','6','7','8','9',
'10','11','12');
function y2k(number) { return (number < 1000) ? number + 1900 : number; }
function monthsahead(noofmonths) {
var today = new Date();
var date = new Date(today.getYear(),today.getMonth() + noofmonths,today.getDate(),today.getHours(),today.getMinutes(),today.getSeconds())
return y2k(date.getYear())+'-'+months[date.getMonth() + 1]+'-'+date.getDate();
}
document.all.Lastthreemonths.value=monthsahead(-3);
document.all.Lastsixmonths.value=monthsahead(-6);
var BeforeMonthDay=getBeforeMonthDay();
var BeforeMonthDayyears = BeforeMonthDay.getFullYear();
var BeforeMonthDaymonths = BeforeMonthDay.getMonth()+1;
var BeforeMonthDaydays = BeforeMonthDay.getDate();
var BeforeMonthDayre = BeforeMonthDayyears + "-" + BeforeMonthDaymonths + "-" + BeforeMonthDaydays; /endDates
document.all.PastMonths.value=BeforeMonthDayre;
function getBeforeMonthDay(){
var msecondsPerMinute = 1000 * 60;
var msecondsPerHour = msecondsPerMinute * 60;
var msecondsPerDay = msecondsPerHour * 24;
var today = new Date();//今天的日期
today.setMonth(today.getMonth());
//today.setDate(30);
var temptoday = new Date(today);//用来计算的这个月的1号
temptoday.setDate(1);
var before = new Date(today);//用来保存前一个月的日期
before.setMonth(today.getMonth()-1);
var tempbefore = new Date(before);//用来计算的前一个月的1号
tempbefore.setDate(1);
var next = new Date(today);//下个月,用来计算本月有多少天
next.setMonth(today.getMonth()+1);
next.setDate(1);
var beforedaycount =Math.floor((temptoday-tempbefore)/msecondsPerDay);//计算前一个月天数
var todaydaycount =Math.floor((temptoday-tempbefore)/msecondsPerDay);//计算本月差额天数
if(todaydaycount>=beforedaycount){//如果本月天数大于前一个月
if(today.getDate()>=beforedaycount){//如果当前的天数大于上个月的天数,那么上个月返回末
before.setDate(beforedaycount);
}
else{//否则返回上个月相同号数的一天
before.setDate(today.getDate());
}
}
else{
if(today.getDate() == todaydaycount){//如果到了本月末尾,返回上月的最后一天
before.setDate(beforedaycount);
}
else{
before.setDate(today.getDate())//否则返回上个月相同号数的一天
}
}
return before;
}
}