http://FMPro.info  FileMaker Pro 関連総合ポータルサイト

HolidayJ 関数

カテゴリー : 日付
計算結果のデータタイプ : テキスト
対応FileMakerバージョン : 対応 7  対応 8  対応 8.5  対応 9  対応 10  対応 11  未対応 12  未対応 13  未対応 14  未対応 15
作者 : 社本修司 株式会社ジェネコム

概要

指定する日付が日本の祝日の場合、その祝日名を返します。

構文

HolidayJ ( 日付 )

引数

引数名タイプ備考
日付日付 2016.08.11

別のウィンドウで、引数の値を変更してテストすることが出来ます

HolidayJ ( "2016.08.11" )

結果

山の日

/*==============================================================

  カスタム関数    HolidayJ ( 日付 )

  CopyRight©2004-2014,SHAMOTO Syuji
  <http://www.FMPro.jp>
  
  指定された日付が祝日の場合、祝日名を得ます。(2014年5月23日現在)
  
  対象範囲
  国民の祝日に関する法律(祝日法)の施行された1948(昭和23)年7月20日以降
  (振替休日は1973(昭和48)年4月12日制定・施行)
  春分・秋分の簡易計算の出来る範囲(1851〜2150)
  春分・秋分の日の計算は「新こよみの便利帳 」(恒星社厚生閣刊) による
  祝日としての春分・秋分の日は閣議で決定され前年の2月の官報に公示される。
  
  このカスタム関数を引用するに当たっては、必ずコメントも一緒に引用してください。

=============================================================*/


Let (

    [   // === Let_Start ==================================

    ~theDate = 日付 ;
    ~year =Year ( ~theDate ) ;           // ~theDate の年

// === ~holidayList START ==============================

    ~holidayList =

     //
    // 祝日名<改行> 日付 <改行>の形式のリスト
    // システム書式にとらわれないようにするために、( 日付 * 1 ) で 日付 を数値化
    //


     "祝日" & "¶¶" &
     Case (
        ~year ≥ 1948 and ~year ≤ 2150 ;

     //
    // 元旦(1月1日)1948.07.20制定
    // New Year's Day (Gantan)
    //


         "元旦¶" &
         Case ( ~year ≥ 1949 ; Date ( 1 ; 1 ; ~year ) * 1 ) & ¶ &

     //
    // 成人の日(1月15日)1948.07.20制定
    // 成人の日(1月第2月曜)1998.10.21制定 2000.01.01施行
    // Coming of Age Day (Seijin-no-hi)
    //


         "成人の日¶" &
         Case (
            ~year ≥ 2000 ;
                 Date ( 1 ; 15 - DayOfWeek ( Date ( 1 ; 6 ; ~year ) ) ; ~year ) ;
            ~year ≥ 1949 ;
                 Date ( 1 ; 15 ; ~year )
        ) * 1 & ¶ &

     //
    // 建国記念の日(2月11日)1966.6.25制定
    // National Foundation Day (Kenkoku-kinen-no-hi)
    //


         "建国記念の日¶" &
         Case ( ~year ≥ 1967 ; Date ( 2 ; 11 ; ~year ) * 1 ) & ¶ &

     //
    // 春分の日(春分日)1948.07.20制定
    // Vernal Equinox (Shunbun-no-hi)
    //


         "春分の日¶" &
         Case (
            ~year ≤ 1899 and ~year ≥ 1851 ;
                 Date ( 3 ; Int ( 19.8277 + .242194 * ( ~year - 1980 ) - Int ( ( ~year - 1983 ) / 4 ) ) ; ~year ) ;
            ~year ≤ 1979 ;
                 Date ( 3 ; Int ( 20.8357 + .242194 * ( ~year - 1980 ) - Int ( ( ~year - 1983 ) / 4 ) ) ; ~year ) ;
            ~year ≤ 2099 ;
                 Date ( 3 ; Int ( 20.8431 + .242194 * ( ~year - 1980 ) - Int ( ( ~year - 1980 ) / 4 ) ) ; ~year ) ;
            ~year ≤ 2150 ;
                 Date ( 3 ; Int ( 21.851 + .242194 * ( ~year - 1980 ) - Int ( ( ~year - 1980 ) / 4 ) ) ; ~year )
        ) * 1 & ¶ &

     //
    // 天皇誕生日(4月29日)1948.07.20制定
    // Emperor's Birthda~year (Tennou-tanjyou-bi)
    //


         "天皇誕生日¶" &
         Case ( ~year ≥ 1949 and ~year ≤ 1988 ; Date ( 4 ; 29 ; ~year ) * 1 ) & ¶ &

     //
    // みどりの日(4月29日)1989.02.17制定
    // Greener~year Day (Midori-no-hi)
    //


         "みどりの日¶" &
         Case ( ~year ≥ 1989 and ~year ≤ 2006 ; Date ( 4 ; 29 ; ~year ) * 1 ) & ¶ &

     //
    // 昭和の日(4月29日)2005.05.20制定 2007.01.01施行
    // Showa's Day (Showa-no-hi)
    //


         "昭和の日¶" &
         Case ( ~year ≥ 2007 ; Date ( 4 ; 29 ; ~year ) * 1 ) & ¶ &

     //
    // 憲法記念日(5月3日)1948.07.20制定
    // Constitution Memorial Day (Kenpou-kinen-bi)
    //


         "憲法記念日¶" &
         Case ( ~year ≥ 1949 ; Date ( 5 ; 3 ; ~year ) * 1 ) & ¶ &
    
     //
    // 国民の休日 1985.12.27制定
    // Holida~year for a Nation (Kokumin-no-kyujitsu)
    
    // 国民の祝日に関する法律 第3条3項(1985.12.27施行)
    // その前日及び翌日が「国民の祝日」である日
    // (日曜日にあたる日及び前項に規定する休日にあたる日を除く。)
    // は、休日とする。
    // 「国民の休日」は通称名
    // ※振り替え休日が優先されるので国民の休日が月曜日になることはない。
    //


         "国民の休日¶" &
         Case (
            ~year ≥ 1986  and ~year ≤ 2006 and DayOfWeek ( Date ( 5 ; 4 ; ~year ) ) ≥ 3 ;
                 Date ( 5 ; 4 ; ~year )
        ) * 1 & ¶ &

     //
    // みどりの日(5月4日)2005.05.20制定 2007.01.01施行
    // Greener~year Day (Midori-no-hi)
    //


         "みどりの日¶" &
         Case ( ~year ≥ 2007 ; Date ( 5 ; 4 ; ~year ) * 1 ) & ¶ &

     //
    // こどもの日(5月5日)1948.07.20制定
    // Children's Day (Kodomo-no-hi)
    //


         "こどもの日¶" &
         Case ( ~year ≥ 1949 ; Date ( 5 ; 5 ; ~year ) * 1 ) & ¶ &

     //
    // 海の日(7月20日)1995.03.08制定 1996.01.01施行
    // 海の日(7月第3月曜日)2001.06.22制定 2003.01.01施行
    // Marine Day (Umi-no-hi)
    //


         "海の日¶" &
         Case (
            ~year ≥ 2003 ;
                 Date ( 7 ; 22 - DayOfWeek ( Date ( 7 ; 6 ; ~year ) ) ; ~year ) ;
            ~year ≥ 1996 ;
                 Date ( 7 ; 20 ; ~year )
        ) * 1 & ¶ &

     //
    // 山の日(8月11日)2014.05.23制定
    // Mountain Day (Yama-no-hi)
    //


         "山の日¶" &
         Case ( ~year ≥ 2016 ; Date ( 8 ; 11 ; ~year ) * 1 ) & ¶ &

     //
    // 敬老の日(9月15日)1966.06.25制定
    // 敬老の日(9月第3月曜日)2001.06.22制定 2003.01.01施行
    // Respect for the Aged Day (Keirou-no-hi)
    //


         "敬老の日¶" &
         Case (
            ~year ≥ 2003 ;
             Date ( 9 ; 22 - DayOfWeek ( Date ( 9 ; 6 ; ~year ) ) ; ~year ) ;
            ~year ≥ 1966 ;
             Date ( 9 ; 15 ; ~year )
        ) * 1 & ¶ &

     //
    // 国民の休日
    // Holida~year for a Nation (Kokumin-no-kyujitsu)
    // 敬老の日が第3月曜日に改正されたことにより派生
    // 秋分の日が水曜日になる年
    // 2009,2015,2026,2032,2037,2043,2049,2054,2060,2071,2077,
    // 2088,2094,2099,2105,2111,2116,2122,2133,2139,2150...
    //


         "国民の休日¶" &
         Case (
            ~year ≥ 2003 and
             Case (
                ~year ≤ 2099 ;
                     Date ( 9 ; Int ( 23.2488 + .242194 * ( ~year - 1980 ) - Int ( ( ~year - 1980 ) / 4 ) ) ; ~year ) ;
                ~year ≤ 2150 ;
                     Date ( 9 ; Int ( 24.2488 + .242194 * ( ~year - 1980 ) - Int ( ( ~year - 1980 ) / 4 ) ) ; ~year )
            ) - 2 =Date ( 9 ; 22 - DayOfWeek ( Date ( 9 ; 6 ; ~year ) ) ; ~year ) ;
                 Case (
                    ~year ≤ 2099 ;
                         Date ( 9 ; Int ( 23.2488 + .242194 * ( ~year - 1980 ) - Int ( ( ~year - 1980 ) / 4 ) ) ; ~year ) ;
                    ~year ≤ 2150 ;
                         Date ( 9 ; Int ( 24.2488 + .242194 * ( ~year - 1980 ) - Int ( ( ~year - 1980 ) / 4 ) ) ; ~year )
                ) -1
        ) * 1 & ¶ &

     //
    // 秋分の日(秋分日)1948.07.20制定
    // Autumnal Equinox (Shuubun-no-hi)
    //


         "秋分の日¶" &
         Case (
            ~year ≤ 1899 and ~year ≥ 1851 ;
                 Date ( 9 ; Int ( 22.2588+.242194* ( ~year - 1980 ) - Int ( ( Y-1983 ) / 4 ) ) ; ~year ) ;
            ~year ≤ 1979 ;
                 Date ( 9 ; Int ( 23.2588+.242194* ( ~year - 1980 ) - Int ( ( ~year - 1983 ) / 4 ) ) ; ~year ) ;
            ~year ≤ 2099 ;
                 Date ( 9 ; Int ( 23.2488+.242194* ( ~year - 1980 ) - Int ( ( ~year - 1980 ) / 4 ) ) ; ~year ) ;
            ~year ≤ 2150 ;
                 Date ( 9 ; Int ( 24.2488+.242194* ( ~year - 1980 ) - Int ( ( ~year - 1980 ) / 4 ) ) ; ~year )
        ) * 1 & ¶ &

     //
    // 体育の日(10月10日)1966.06.25制定
    // 体育の日(10月第2月曜日)1998.10.21制定 2000.01.01施行
    // Health and Sports Day (Taiku-no-hi)
    //


         "体育の日¶" &
         Case (
            ~year ≥ 2000 ;
                 Date ( 10 ; 15 - DayOfWeek ( Date ( 10 ; 6 ; ~year ) ) ; ~year ) ;
            ~year ≥ 1966 ;
                 Date ( 10 ; 10 ; ~year )
        ) * 1 & ¶ &

     //
    // 文化の日(11月3日)1948.07.20制定
    // National Culture Day (Bunka-no-hi)
    //


         "文化の日¶" &
         Case ( ~year ≥ 1948 ; Date ( 11 ; 3 ; ~year ) * 1 ) & ¶ &

     //
    // 勤労感謝の日(11月23日)1948.07.20制定
    // Labor Thanksgiving Day (Kinrou-kansha-no-hi)
    //


         "勤労感謝の日¶" &
         Case ( ~year ≥ 1948 ; Date ( 11 ; 23 ; ~year ) * 1 ) & ¶ &

     //
    // 天皇誕生日(12月23日)1989.02.17制定
    // Emperor's Birthda~year (Tennou-tanjyou-bi)
    //


         "天皇誕生日¶" &
         Case ( ~year ≥ 1989 ; Date ( 12 ; 23 ; ~year ) * 1 ) & ¶ &

     //
    // 皇太子明仁親王の結婚の儀(昭和34年4月10日)
    // The Rite of Wedding of His Imperial Highness Crown Prince Akihito
    // (Koutaishi-AKIHITO-shinno-no-kekkonn-no-gi)
    //


         "皇太子明仁親王の結婚の儀¶" &
         Case ( ~year = 1959 ; Date ( 4 ; 10 ; ~year ) * 1 ) & ¶ &

     //
    // 昭和天皇の大喪の礼(平成元年2月24日)
    // The Funeral Ceremon~year of Emperor Showa
    // (SHOWA-tennou-no-taisou-no-rei)
    //


         "昭和天皇の大喪の礼¶" &
         Case ( ~year = 1989 ; Date ( 2 ; 24 ; ~year ) * 1 ) & ¶ &

     //
    // 即位礼正殿の儀(平成2年11月12日)
    // The Ceremon~year of the Enthronement of His Majest~year the Emperor (at the Seiden)
    // (Sokuirei-seiden-no-gi)
    //


         "即位礼正殿の儀¶" &
         Case ( ~year = 1990 ; Date ( 11 ; 12 ; ~year ) * 1 ) & ¶ &

     //
    // 皇太子徳仁親王の結婚の儀(平成5年6月9日)
    // The Rite of Wedding of His Imperial Highness Crown Prince Naruhito
    // (Koutaishi-NARUHITO-shinno-no-kekkonn-no-gi)
    //


         "皇太子徳仁親王の結婚の儀¶" &
         Case ( ~year = 1993 ; Date ( 6 ; 9 ; ~year ) * 1 ) & ¶

    ) ;
// === ~holidayList END ================================

     //
    // ~holidayList 内の ~theDate の位置
    //


    ~theDatePosition = Position ( ~holidayList ; ( ~theDate * 1 ) ; 1 ; 1 ) ;

     //
    // ~theDate に対する祝日名の書かれた行が ~holidayList の何行目か
    //


    ~line = PatternCount ( Left ( ~holidayList ; ~theDatePosition ) ; ¶ )

    ] ;   // === Let_End ==================================

     //
    // 祝日名( ~holidayList の ~line( ~theDate の一つ前)の行 )
    //


     Case (
        not IsEmpty ( ~theDate ) ;
             Case (
                 // ~theDate が ~holidayList に含まれる場合
                 PatternCount ( ~holidayList ; ( ~theDate * 1 ) ) ;
                     Substitute ( MiddleValues ( ~holidayList ; ~line ; 1 ) ; ¶ ; "" ) ;

                 //
                // 2005.05.20 の法改正で
                // 「国民の祝日」が日曜日に当たるときは、その日後においてその日に最も近い「国民の祝日」でない日を休日とする。
                // と振替休日の定義が変更になっている
                //
                
                // 5月3日、5月4日が日曜日の場合は5月6日は振替休日

                
                ~theDate ≥ Date ( 1 ; 1 ; 2007 ) and
                ~theDate  = Date ( 5 ; 6 ; ~year ) and
                (
                     DayOfWeek ( Date ( 5 ; 3 ; ~year ) ) = 1 or
                     DayOfWeek ( Date ( 5 ; 4 ; ~year ) ) = 1
                ) ;
                     "振替休日" ;

                 //
                // 振り替え休日(1973(昭和48)年4月12日施行)
                // Substitute Holiday
                //


                 // ~theDate が月曜日でかつ ~theDate の前日が ~holidayList に含まれる場合
                ~theDate ≥ Date ( 4 ; 12 ; 1973 ) and
                 DayOfWeek ( ~theDate ) = 2 and
                 PatternCount ( ~holidayList ; ( ~theDate * 1 ) - 1 ) ;
                     "振替休日"
        )
    )
)
// ©2004-2014,SHAMOTO Syuji <http://www.FMPro.jp>

エンコードは Unicode (UTF-8)、改行タイプは LF (Unix) 形式のテキストとして保存します。
テキストエディタで正常に開かない場合は、エンコードを指定してファイルを開くようにしてください。

詳細説明

指定する日付が日本の祝日の場合、その祝日名を返します。
対象範囲
国民の祝日に関する法律(祝日法)の施行された1948(昭和23)年7月20日以降
(振替休日は1973(昭和48)年4月12日制定・施行)
春分・秋分の簡易計算の出来る範囲(1851〜2150)

この関数が使用する他のカスタム関数

この関数を使用する他のカスタム関数

注意:ここで紹介されているカスタム関数をご自分のシステムに組み込んだ場合に発生した問題についてはFMPro.infoは責任を負いません。

Copyright © 2004-2009 FMPro.info All Rights Reserved.