当前位置:编程学习 > JS >>

通过JS判断参数日期是否为日本的祝日

Js代码 
//另封装了一个方法,周日也是休息日 
Js代码 
//因没看懂文件开头写的什么,所以不好在原有文件直接再封装方法,所以下面这个方法是在另一个JS文件中写的。 
Js代码 
function isHoliDays(sdate){//sdate="yyyy/mm/dd" 
 var tdate=new Date(sdate); 
 if(tdate.getDay()==0){ 
  return true; 
 }else{ 
  var ts=ktHolidayName(sdate); 
  if(ts!=""){ 
   return true; 
  }else{ 
   return false; 
  } 
 } 

Js代码 
很全春分,秋分,振替休日等都有,并根据相关节假日发布时间开始算。 
Js代码 
<!-- 
//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 
//_/ 
//_/ CopyRight(C) K.Tsunoda(AddinBox) 2001 All Rights Reserved. 
//_/ ( http://www.h3.dion.ne.jp/~sakatsu/index.htm ) 
//_/ 
//_/ この祝日判定コードは『Excel:kt関数アドイン』で使用している 
//_/ VBAマクロを[JavaScript]に移植したものです。 
//_/ この関数では、2007年施行の改正祝日法(昭和の日)までを 
//_/ サポートしています(9月の国民の休日を含む)。 
//_/ 
//_/ (*1)このコードを引用するに当たっては、必ずこのコメントも 
//_/ 一緒に引用する事とします。 
//_/ (*2)他サイト上で本マクロを直接引用する事は、ご遠慮願います。 
//_/ 【 http://www.h3.dion.ne.jp/~sakatsu/holiday_logic.htm 】 
//_/ へのリンクによる紹介で対応して下さい。 
//_/ (*3)[ktHolidayName]という関数名そのものは、各自の環境に 
//_/ おける命名規則に沿って変更しても構いません。 
//_/  
//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 
// 
// 2008/10/29 変数のvar指定が無く、広域変数扱いになっていたのを修正しました。 
// 
// 2011/3/20  FireFox3.5/3.6で使用した場合に間違った結果を返す場合がありました。 
//            FireFoxのJITコンパイラ(TraceMonkey)の不具合によるswitchステートメ 
//            ントの誤コンパイルが原因であると判明したため、switchを[if else]に 
//            変更しました。なお、本スクリプトのバグではありませんので、FireFox 
//            以外のブラウザでは問題は起きていません(修正前のswitchを使ったスク 
//            リプトでもFireFox以外のブラウザでは正常に動作します)。 
//            このFireFoxのバグに関する解説を下記に整理してあります。 
//              http://www.h3.dion.ne.jp/~sakatsu/FireFox_TMBugTest.htm 
//            修正前のswitchを使ったバージョンは下記に残してあります。 
//              http://www.h3.dion.ne.jp/~sakatsu/HolidayChk_switch.js 
 
var MONDAY = 1; 
var TUESDAY = 2; 
var WEDNESDAY = 3; 
 
// JavaScriptで扱える日付は1970/1/1~のみ 
//var cstImplementTheLawOfHoliday = new Date("1948/7/20");  // 祝日法施行 
//var cstAkihitoKekkon = new Date("1959/4/10");              // 明仁親王の結婚の儀 
var cstShowaTaiso = new Date("1989/2/24");                // 昭和天皇大喪の礼 
var cstNorihitoKekkon = new Date("1993/6/9");            // 徳仁親王の結婚の儀 
var cstSokuireiseiden = new Date("1990/11/12");          // 即位礼正殿の儀 
var cstImplementHoliday = new Date("1973/4/12");        // 振替休日施行 
 
// [prmDate]には "yyyy/m/d"形式の日付文字列を渡す 
function ktHolidayName(prmDate) 

  var MyDate = new Date(prmDate); 
  var HolidayName = prvHolidayChk(MyDate); 
  var YesterDay; 
  var HolidayName_ret; 
 
  if (HolidayName == "") { 
      if (MyDate.getDay() == MONDAY) { 
          // 月曜以外は振替休日判定不要 
          // 5/6(火,水)の判定はprvHolidayChkで処理済 
          // 5/6(月)はここで判定する 
          if (MyDate.getTime() >= cstImplementHoliday.getTime()) { 
              YesterDay = new Date(MyDate.getFullYear(), 
                                     MyDate.getMonth(),(MyDate.getDate()-1)); 
              HolidayName = prvHolidayChk(YesterDay); 
              if (HolidayName != "") { 
                  HolidayName_ret = "振替休日"; 
              } else { 
                  HolidayName_ret = ""; 
              } 
          } else { 
              HolidayName_ret = ""; 
          } 
      } else { 
          HolidayName_ret = ""; 
      } 
  } else { 
      HolidayName_ret = HolidayName; 
  } 
 
  return HolidayName_ret; 

 
//=============================================================== 
 
function prvHolidayChk(MyDate) 

  var MyYear = MyDate.getFullYear(); 
  var MyMonth = MyDate.getMonth() + 1;    // MyMonth:1~12 
  var MyDay = MyDate.getDate(); 
  var NumberOfWeek; 
  var MyAutumnEquinox; 
 
// JavaScriptで扱える日付は1970/1/1~のみで祝日法施行後なので下記は不要 
// if (MyDate.getTime() < cstImplementTheLawOfHoliday.getTime()) { 
//   return ""; // 祝日法施行(1948/7/20)以前 
//

补充:Web开发 , Jsp ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,