JavaScript 日付 に関連する 便利 な関数!
k.w
SEへの道
どんなプログラミング言語でも必要な 数字 や 文字列 の チェック 。
これは、 JavaScript でも例外ではありません。
形式が違えば、データベースに対して処理が上手くいかなかったり。
思っている処理は実現できません。
共通関数にすればその手間も削減しますよね。
データベースを使う時は必須項目になりますよね。
//引数:len_str チェックする文字列
//引数:limit 長さ最大値
//戻値:true / flase(文字数オーバ)
function isLengthValue(len_str,limit) {
var i , cnt =0;
//文字数カウント
for (i=0; i < len_str.length; i++) {
if (escape(len_str.charAt(i)).length >= 4) cnt += 2;
else cnt++;
}
//上限チェック
if (cnt > limit) return false;
return true;
}
数字かどうかのチェックです。
//引数:num_str 妥当性を確認する文字
//戻値:num_str /“”(正しくない場合)
function isNumValue(num_str,len) {
var check_str = num_str;
if (check_str == “”) {
return check_str;
}
if (type of len !== “undefined”) {
if (check_str.length != len) {
return “”;
}
}
//
if(isNaN(Number(chekc_str))) {
return “”;
} else {
if (typeof len !== “undefined”) {
if (check_str.length != len) {
return “”;
}
}
return check_str;
}
}
日付かどうかのチェックです。
//引数:date_str 妥当性を確認する文字
//戻値:true / false → ret(本日)
function isDateValue(date_str) {
var check = false;
var yyyy, mm, dd, ret =“”;
//日付だけ8桁対応
var check_str = date_conv(date_str).substr(0,10);
//年月日に分割
yyyy = check_str.substr(0,4);
mm = check_str.substr(5,2);
dd = check_str.substr(8,2);
//空白の時は空を返す
if (yyyy = “”) return check;
//引数の年月日を用いる
dt = new Date(yyyy, mm-1, dd);
//日にちは2桁が前提
if (dd.length == 2 && (dt.getFullYear*() == yyyy && dt.getMonth() == mm-1 && dt.getDate() == dd)) {
check = true;
return check;
} else {
check = false;
//実行時状況から取得
mon = (dt.getMonth() +1) + “”;
if (mon.length == 1) {
mon = “0” + mon;
}
day = geteDate() + “”;
if (day.length == 1) {
day = “0” + day;
}
ret dt.getFullYear() + “/“ + mon + “/“ + day;
return ret;
}
}
時間かどうかのチェックです。
//引数:time_str 妥当性を確認する文字
//戻値:true / false → ret(現時刻)
function isTimeValue(time_str) {
var check = false;
var hh, mm, ret = “”;
var check_str = time_str.substr(0,5);
//時分に分割
hh = check_str.substr(0,2);
mm = check_str.substr(3,2);
//空白の時は空を返す
if (hh == “”) return check;
//引数の年月日を用いる
dt = new Date(2000, 01, 01, hh, mm);
//時間は2桁が前提
if (hh.length == 2 && mm.length == 2 && (dt.getHours() == hh && dt.getMinutes() == mm)) {
check = true;
return check;
} else {
check = false;
//実行時状況から取得
hour = (dt.getHours()) + “”;
if (hour.length == 1) {
hour = “0” + hour;
}
minute = geteMinutes() + “”;
if (minute.length == 1) {
minutes = “0” + minute;
}
ret hour + “:“ + minute;
return ret;
}
}
どうでしたか?意外とチェックだけでも大変ですよね。
共通して使える関数なので、便利テンプレートとして使い回しすることをお勧めします。
他にも繰り返しで実施しているようなものあれば、どんどんカスタマイズしていきましょう。