* 和暦日付チェック
* @param {String} warekiDate 和暦パラメーター
*/
function isWarekiDate(warekiDate) {
if (warekiDate == null || warekiDate == "") {
return false;
}
var params = warekiDate.split(",");
if (params.length < 4) {
return false;
}
var genGou = Number(params[0]);
var year = Number(params[1]);
var month = Number(params[2]);
var day = Number(params[3]);
//和暦の元号コード、和暦の年、月、日が数字以外の場合、エラーにする
if (isNaN(genGou) || isNaN(year) || isNaN(month) || isNaN(day)) {
return false;
}
//和暦の元号コードが1(昭和)と2(平成)以外の場合、エラーにする。
if (genGou != 1 && genGou != 2) {
return false;
}
//和暦の元号コードと和暦の年により、西暦の年を計算する。
if (genGou == 1) { //昭和
year = 1926 + year - 1;
} else if (genGou == 2) { //平成
year = 1989 + year - 1;
}
//西暦年と月、日により、画面入力チェックのerrors.dateで西暦日付をチェックする
if (isValidDate(day, month, year) == false) {
return false;
}
//和暦年、月、日の範囲チェック。
var monthStr = "0" + month;
monthStr = monthStr.substring(monthStr.length - 2);
var dayStr = "0" + day;
dayStr = dayStr.substring(dayStr.length - 2);
var dateStr = year + monthStr + dayStr;
if (genGou == 1) { //昭和
if (dateStr >= "19261225" && dateStr <= "19890107") {
return true;
}
} else if (genGou == 2) { //平成
if (dateStr >= "19890108") {
return true;
}
}
return false;
}
/**
* 西暦日付チェック
* @param {Integer} day 日
* @param {Integer} month 月
* @param {Integer} year 年
*/
function isValidDate(day, month, year) {
if (isNaN(year) || year < 1900 || year > 2100) {
return false;
}
if (isNaN(month) || month < 1 || month > 12) {
return false;
}
if (isNaN(day) || day < 1 || day > 31) {
return false;
}
if ((month == 4 || month == 6 || month == 9 || month == 11) && (day == 31)) {
return false;
}
if (month == 2) {
var leap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day > 29 || (day == 29 && !leap)) {
return false;
}
}
return true;
}
* 日付文字列チェック(yyyy/MM/dd or yyyyMMdd)
* @param {String} value 入力した日付文字列
*/
function isValidDateString(value){
var length = value.length;
if (length < 8 || length > 10) {
return false;
} else {
var index = value.indexOf('/');
if (index == -1) {
if (length != 8) {
return false;
}
var year = parseInt(value.substring(0, 4));
var month = parseInt(value.substring(4, 6));
var day = parseInt(value.substring(6, 8));
} else {
if (index != 4) {
return false;
}
var index2 = value.indexOf('/', index + 1);
var index3 = value.lastIndexOf('/');
if (index == index2 || index2 == length || index2 != index3) {
return false;
} else {
var year = Number(value.substring(0, 4));
var month = Number(value.substring(5, index2));
var day = Number(value.substring(index2 + 1, length));
}
}
}
return isValidDate(day, month, year);
}