JS 中处理日期
<
script type
=
"
text/javascript
"
>
// 计算天数差的函数 yyyy-mm-dd (sDate2-sDate1)间的天数
function DateDiff(sDate1, sDate2) ... { //sDate1和sDate2是2006-12-18格式
var oDate1 = StringToDate(sDate1);
var oDate2 = StringToDate(sDate2);
var iDays = (oDate2.getTime()-oDate1.getTime())/(24*60*60*1000);
//修正:2007-8-18到2007-8-18算一天,2007-8-18到2007-8-19算两天
if(iDays > 0)...{
iDays = iDays +1;
}
if(iDays < 0)...{
iDays = iDays -1;
}
if(iDays == 0)...{ //
iDays = 1;
}
//alert(sDate1+" 加上 0 天: "+addDays(sDate1,0));
return iDays;
}
// 计算天数差的函数 yyyy-mm-dd (sDate2-sDate1)间的天数 去掉周末
function DateDiffNoWeekDay(sDate1, sDate2) ... { //sDate1和sDate2是2006-12-18格式
var oDate1 = StringToDate(sDate1);
var oDate2 = StringToDate(sDate2);
var days = 1;
//alert(sDate1+" "+sDate2);
var tempDate = oDate1;
while(tempDate.getTime() < oDate2.getTime())...{
tempDate = addDays(tempDate,2);//加一天
if(!checkWeekDay(DateToString(tempDate)))...{//不是周末
days++;
//alert(days);
}
}
return days;
}
// yyyy-mm-dd 加上days天数后返回 yyyy-mm-dd
function addDays(oDate,days) ... {
if(days > 0)...{
days = days - 1;
}
if(days < 0)...{
days = days + 1;
}
var result = new Date(oDate.getTime()+(days*24 * 60 * 60 * 1000));
return result;
}
// 去掉周末 new
function addDaysNoWeekDay(sDate,days) ... {
oDate = StringToDate(sDate);
//修正:2007-8-18加1天或0天还是2007-8-18,2007-8-18加2天为2007-8-19
if(days > 0)...{
days = days - 1;
}
if(days < 0)...{
days = days + 1;
}
var tempDate = oDate;
for(i=0;i<days;i++)...{
tempDate = addDays(tempDate,2);//加上一天
if(checkWeekDay(DateToString(tempDate)))...{//校验是不是周末
i--;
}
}
return DateToString(tempDate);
}
// Date型转成yyyy-mm-dd
function DateToString(oDate) ... {
var month = oDate.getMonth()+1;
var day = oDate.getDate();
if(month<10)...{
month="0"+month;
}
if(day<10)...{
day = "0"+day;
}
return oDate.getFullYear() + "-" + month +"-"+ day;
}
// yyyy-mm-dd型转成Date
function StringToDate(sDate) ... {
var aDate = sDate.split("-");
return new Date(aDate[1] + "-" + aDate[2] + "-" + aDate[0]);
}
// 判断日期的正确性,yyyy-mm-dd
String.prototype.isDate = function ()
... {
//用法:alert("2007-01-31".isDate());
var r = this.match(/^(d...{1,4})(-)(d...{1,2})2(d...{1,2})$/);
if(r==null)return false; var d = new Date(r[1], r[3]-1, r[4]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}
// 对String型校验 判断是不是周末
function checkWeekDay(sDate) ... {
aDate = sDate.split("-")
oDate = new Date(aDate[1] + "-" + aDate[2] + "-" + aDate[0]) //转换为12-18-2006格式
day = oDate.getDay();
if(day==0 || day == 6)...{
return true;
}
return false;
}
// 判断是否为数字
function checknum(p)
... {
p=p.replace(/(^s*)|(s*$)/g, "");//去掉空格
var l = p.length;
var count=0;
for(var i=0; i<l; i++)
...{
var digit = p.charAt(i);
if(digit == "." )
...{
++count;
if(count>1)
...{
return false;
}
}
else if(digit < "0" || digit > "9")
...{
return false;
}
}
return true;
}
// 计算天数差的函数 yyyy-mm-dd (sDate2-sDate1)间的天数
function DateDiff(sDate1, sDate2) ... { //sDate1和sDate2是2006-12-18格式
var oDate1 = StringToDate(sDate1);
var oDate2 = StringToDate(sDate2);
var iDays = (oDate2.getTime()-oDate1.getTime())/(24*60*60*1000);
//修正:2007-8-18到2007-8-18算一天,2007-8-18到2007-8-19算两天
if(iDays > 0)...{
iDays = iDays +1;
}
if(iDays < 0)...{
iDays = iDays -1;
}
if(iDays == 0)...{ //
iDays = 1;
}
//alert(sDate1+" 加上 0 天: "+addDays(sDate1,0));
return iDays;
}
// 计算天数差的函数 yyyy-mm-dd (sDate2-sDate1)间的天数 去掉周末
function DateDiffNoWeekDay(sDate1, sDate2) ... { //sDate1和sDate2是2006-12-18格式
var oDate1 = StringToDate(sDate1);
var oDate2 = StringToDate(sDate2);
var days = 1;
//alert(sDate1+" "+sDate2);
var tempDate = oDate1;
while(tempDate.getTime() < oDate2.getTime())...{
tempDate = addDays(tempDate,2);//加一天
if(!checkWeekDay(DateToString(tempDate)))...{//不是周末
days++;
//alert(days);
}
}
return days;
}
// yyyy-mm-dd 加上days天数后返回 yyyy-mm-dd
function addDays(oDate,days) ... {
if(days > 0)...{
days = days - 1;
}
if(days < 0)...{
days = days + 1;
}
var result = new Date(oDate.getTime()+(days*24 * 60 * 60 * 1000));
return result;
}
// 去掉周末 new
function addDaysNoWeekDay(sDate,days) ... {
oDate = StringToDate(sDate);
//修正:2007-8-18加1天或0天还是2007-8-18,2007-8-18加2天为2007-8-19
if(days > 0)...{
days = days - 1;
}
if(days < 0)...{
days = days + 1;
}
var tempDate = oDate;
for(i=0;i<days;i++)...{
tempDate = addDays(tempDate,2);//加上一天
if(checkWeekDay(DateToString(tempDate)))...{//校验是不是周末
i--;
}
}
return DateToString(tempDate);
}
// Date型转成yyyy-mm-dd
function DateToString(oDate) ... {
var month = oDate.getMonth()+1;
var day = oDate.getDate();
if(month<10)...{
month="0"+month;
}
if(day<10)...{
day = "0"+day;
}
return oDate.getFullYear() + "-" + month +"-"+ day;
}
// yyyy-mm-dd型转成Date
function StringToDate(sDate) ... {
var aDate = sDate.split("-");
return new Date(aDate[1] + "-" + aDate[2] + "-" + aDate[0]);
}
// 判断日期的正确性,yyyy-mm-dd
String.prototype.isDate = function ()
... {
//用法:alert("2007-01-31".isDate());
var r = this.match(/^(d...{1,4})(-)(d...{1,2})2(d...{1,2})$/);
if(r==null)return false; var d = new Date(r[1], r[3]-1, r[4]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}
// 对String型校验 判断是不是周末
function checkWeekDay(sDate) ... {
aDate = sDate.split("-")
oDate = new Date(aDate[1] + "-" + aDate[2] + "-" + aDate[0]) //转换为12-18-2006格式
day = oDate.getDay();
if(day==0 || day == 6)...{
return true;
}
return false;
}
// 判断是否为数字
function checknum(p)
... {
p=p.replace(/(^s*)|(s*$)/g, "");//去掉空格
var l = p.length;
var count=0;
for(var i=0; i<l; i++)
...{
var digit = p.charAt(i);
if(digit == "." )
...{
++count;
if(count>1)
...{
return false;
}
}
else if(digit < "0" || digit > "9")
...{
return false;
}
}
return true;
}