/*
-------------------------------------------------------------------------------
文件名称:date.js
说 明:JavaScript脚本,处理一些和日期有关的动作
版 本:1.0
修改纪录:
---------------------------------------------------------------------------
时间 修改人 说明
2005-4-20 zhouming 创建
-------------------------------------------------------------------------------
*/
/*
用途:把日期从一种格式转换为另一种格式
输入:date:日期;fmt1:原来的格式;fmt2 转换成的格式
返回:fmt2格式的日期
格式:年:yyyy 月:MM 日:dd
时:HH 分:mm 秒:ss
*/
function dateFormat( date, fmt1,fmt2) {
if (isFormatDate( date, fmt1)) {
if (fmt2.indexOf("yyyy")!=-1&&fmt2.indexOf("MM")!=-1&&fmt2.indexOf("dd")!=-1){
//设置日期
var retDate = setDate( date, fmt1,fmt2);
if (fmt2.indexOf("HH")!=-1&&fmt2.indexOf("mm")!=-1&&fmt2.indexOf("ss")!=-1){
//设置时间
retDate = setTime(date, fmt1,retDate);
}
return retDate;
}
else {
alert("日期格式错误");
}
}
else {
alert("日期格式错误");
}
return "";
}
/*
用途:判断是否是日期
输入:date:日期;fmt:日期格式
返回:如果通过验证返回true,否则返回false
*/
function isFormatDate( date, fmt) {
var yIndex = fmt.indexOf("yyyy");
if(yIndex==-1) return false;
var year = date.substring(yIndex,yIndex+4);
var mIndex = fmt.indexOf("MM");
if(mIndex==-1) return false;
var month = date.substring(mIndex,mIndex+2);
var dIndex = fmt.indexOf("dd");
if(dIndex==-1) return false;
var day = date.substring(dIndex,dIndex+2);
if(!isNumber(year)||year>"2100" || year< "1900") return false;
if(!isNumber(month)||month>"12" || month< "01") return false;
if(day>getMaxDay(year,month) || day< "01") return false;
return true;
}
//取得某个月的最大天数
function getMaxDay(year,month) {
if(month==4||month==6||month==9||month==11)
return "30";
if(month==2)
if(year%4==0&&year%100!=0 || year%400==0)
return "29";
else
return "28";
return "31";
}
function isNumber( str ){
var regu = /^(\d+)$/;
return regu.test(str);
}
function setDate( date, fmt1,fmt2) {
var yIndex = fmt1.indexOf("yyyy");
var year = date.substring(yIndex,yIndex+4);
var mIndex = fmt1.indexOf("MM");
var month = date.substring(mIndex,mIndex+2);
var dIndex = fmt1.indexOf("dd");
var day = date.substring(dIndex,dIndex+2);
var retDate = fmt2;
retDate = retDate.replace(/yyyy/i,year);
retDate = retDate.replace(/MM/i,month);
retDate = retDate.replace(/dd/i,day);
return retDate ;
}
function setTime( date, fmt1,retDate) {
var hour ="00";
var min ="00";
var sec ="00";
var hIndex = fmt1.indexOf("HH");
var mIndex = fmt1.indexOf("mm");
var sIndex = fmt1.indexOf("ss");
if(sIndex!=-1&&hIndex!=-1&&mIndex!=-1) {
sec = date.substring(sIndex,sIndex+2);
min = date.substring(mIndex,mIndex+2);
hour = date.substring(hIndex,hIndex+2);
if(!isNumber(hour)||hour>"23" || hour< "00") {alert("日期格式错误"); return ""};
if(!isNumber(min)||min>"59" || min< "00") {alert("日期格式错误"); return ""};
if(!isNumber(sec)||sec>"59" || sec< "00") {alert("日期格式错误"); return ""};
}
else if (!(sIndex==-1&&hIndex==-1&&mIndex==-1))
{
alert("日期格式错误");
return "";
}
retDate = retDate.replace(/HH/i,hour);
retDate = retDate.replace(/mm/i,min);
retDate = retDate.replace(/ss/i,sec);
return retDate;
}