問答収集 カテゴリ:JavaScriptプログラミング
現在のスレッド一覧 / 新規に質問を投稿
レス数:4 / 状態:未解決 / No:11 / ATOM
1 名前:ペロ 日付:2014/09/05(金)07:38:13 ID:22BBhMLhWk7u
はじめまして!
現在javascriptにて日付けチェックの関数を作成しているのですが
getfullyearメソッドをつかい、正しい日付けかチェックしているのですが0001年
がはじかれてしまうのですがはじかれないようにするにはどのようにしたら良いのでしょうか?

どなたかご教授頂ければありがたいです。
2 日付:2014/09/05(金)08:57:57 ID:uqGvQ4UrzKin
Date コンストラクタの引数は、2000年問題に対応していないので
setFullYear() メソッドを使って西暦値だけ再設定するといいのではないでしょうか

// Date オブジェクトを作成する
var date_obj = new Date("0001",1,3);
//console.log(date_obj.getFullYear()); // 1901

// 西暦を設定する
date_obj.setFullYear(1);
//console.log(date_obj.getFullYear()); // 1
3 名前:ペロ 日付:2014/09/05(金)09:48:05 ID:22BBhMLhWk7u
お早い回答ありがとうございます。

現在webアプリケーションで生徒のデータ登録システムを作成しているのですが
何上初心者なもので(T . T)


06
function ckDate(datestr) {
07
    // 正規表現による書式チェック
08
    if(!datestr.match(/^\d{4}\/\d{2}\/\d{2}$/)){
09
        return false;
10
    }
11
    var vYear = datestr.substr(0, 4) - 0;
12
    var vMonth = datestr.substr(5, 2) - 1; // Javascriptは、0-11で表現
13
    var vDay = datestr.substr(8, 2) - 0;
14
    // 月,日の妥当性チェック
15
    if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){
16
        var vDt = new Date(vYear, vMonth, vDay);
17
        if(isNaN(vDt)){
18
            return false;
19
        }else if(vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay){
20
            return true;
21
        }else{
22
            return false;
23
        }
24
    }else{
25
        return false;
26
    }
27
}


これだと0001はエラーになってしまいますかね?(T . T)
あとどのタイミングで正しい日付けではないというアラートはどのタイミングでだせば適切でしょうか?
4 日付:2014/09/05(金)19:34:37 ID:uqGvQ4UrzKin
16行目の Date コンストラクタの第01引数に 0~99 の数値を指定すると、1900 ~ 1999 年と解釈されます。
17行目に setFullYear() を追加して、西暦だけ再設定すると 0000 ~ 0099 年も取り扱う事ができます。
 
    var vDt = new Date(vYear, vMonth, vDay);
    vDt.setFullYear(vYear);
このスレッドについて
質問の状態 :
未解決
投稿開始日 :
2014/09/05(金)07:38:13
投稿終了日 :
2014/09/12(金)19:35:02
投稿者 :
ペロ
レス総数 :
4
スレッド番号 :
11
MondoCollectionSystem ver.0x00020000 by Hakuhin