たとえば、こんなふうに2つのdateタイプのinput要素があって、その期間を計算する方法です。
JQueryのスクリプトはこんな感じ。
setDate関数を作って、その中で計算しています。
日付のフォーマットは、こちらが参考になりました。
http://stackoverflow.com/questions/3066586/get-string-in-yyyymmdd-format-from-js-date-object
この部分です。
var year = fromDate.getFullYear().toString(); var mm = (fromDate.getMonth() + 1).toString(); var dd = fromDate.getDate().toString(); var yyyymmdd = year + '-' + (mm[1]?mm:"0"+mm[0]) + '-' + (dd[1]?dd:"0"+dd[0]); $('#date-end').val(yyyymmdd);
dateタイプのvalueを設定するには、2016-04-04のようなフォーマットでなければいけないようで、そのためのフォーマティングをここでやってます。
jQuery UI を使えば、もっとシンプルにできるようですが、ここでは使わない前提で。
日付の計算は簡単で、getTimeで取得した数値を引き算してるだけです。
var days = Math.floor((toDate.getTime() - fromDate.getTime()) / 86400000);
getTimeで取得できるのは、1970/01/01 00:00:00から経過したミリ秒なので、60*60*24*1000 = 86400000 で割って、小数点以下は、Math.floorで切り捨て。