javascriptで日付を扱う場合、Dateクラスがありますが、普段、perlのDateCalcを使い慣れている私の場合、Dateクラスでは、スラスラ書けません。
そこで、DateCalcで私がよく利用する関数をjavascriptで実装してみました。
// http://search.cpan.org/dist/Date-Calc/ var DateCalc = { leap_year : function(year){ //閏年チェック if ( year % 400 == 0 ) return true; if ( year % 100 == 0 ) return false; if ( year % 4 == 0 ) return true; return false; }, check_date : function(year,month,day){ //日付の妥当性 var date = new Date(year, month - 1, day); if(date == null || date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day) { return false; } return true; }, Days_in_Month : function(year,month){ //月末の日付 var date = new Date(year, month, 0); //day=0は前月末日を表します return date.getDate(); }, Delta_Days : function(year1,month1,day1,year2,month2,day2){ //日付の差 var date1 = new Date(year1, month1 - 1, day1); var date2 = new Date(year2, month2 - 1, day2); //sec * min * hour * day = 1000 * 60 * 60 * 24 = 86400000 return (date1 - date2) / 86400000; }, Add_Delta_Days : function(year,month,day, Dd){ //??日後の日付 var date = new Date(year, month-1, day+Dd); return [date.getFullYear(), date.getMonth() + 1, date.getDate()]; }, Today_and_Now : function(){ var date = new Date(); return [date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()]; }, Today : function(){ var date = new Date(); return [date.getFullYear(), date.getMonth() + 1, date.getDate()]; }, Now : function(){ var date = new Date(); return [date.getHours(), date.getMinutes(), date.getSeconds()]; } };
「 DateCalc.Add_Delta_Days(2012,1,1,3) 」のようにstatic methodを呼ぶように使います。
参考にさせて頂いたurl -> http://www.hoge256.net/2007/08/64.html