/*
-------------------------------------------------------------------------------
文件名稱: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;
}