ボクの覚え書き – CentOSでサーバ構築 サーバー構築やプログラミングの覚え書き

JavaScriptで日付の比較

12.02.2008 · Posted in 覚え書き

こんなフォームがありまして

開始日
<select name="sy">
<option value="2008">2008年</option>
</select>
<select name="sm">
<option value="1">1月</option>
<option value="1">2月</option>
</select>
<select name="sd">
<option value="1">1日</option>
<option value="2">2日</option>
</select>
~
終了日時
<select name="ey">
<option value="2008">2008年</option>
</select>
<select name="em">
<option value="1">1月</option>
<option value="1">2月</option>
</select>
<select name="ed">
<option value="1">1日</option>
<option value="2">2日</option>
</select>

終了日時に開始日時より前の日時が選択されていたらアラートを出す

というJavaScriptをかいてました。

startyear = フォームの開始年の値;
endyear = フォームの終了年の値;
if(startyear > endyear){ ...

だいたいこんな感じです。

しかし、ここで問題が発生。

月や日の指定などで一桁と二桁を選択する、たとえば2月と12月というふうに選ぶと、2の方が大きいといわれてしまいます。

どうやら文字列として扱われてしまっているようです。

解決方法としては2つ。

eval関数を使う。こんな感じ。

startyear = eval(フォームの開始年の値);
endyear = eval(フォームの終了年の値);
if(startyear > endyear){ ...

もうひとつはDate型オブジェクトを生成し、getTimeを使う。こちらはこんな感じ。

start = new Date(開始年, 開始月, 開始日);
end = new Date(終了年, 終了月, 終了日);
s = start.getTime();
e = end.getTime();
if(s > e){ ...

個人的にはgetTimeの方がいいかな。

Comments are closed