1

特定の日付がメモリアル デー、労働者の日、感謝祭、イースターなどの休日に該当するかどうかを調べる必要があります。ただし、これらの休日は月の週または曜日に基づいて変動します。これを行うためのコードがそこにあると確信しているので、車輪の再発明はしたくありません.

具体的には、何かが発生する日付があり、その日付に関する情報を追加したり、イベントが休日に発生した場合に追加のこと (追加料金を追加するなど) をしたりします。このようなものですが、連邦の祝日ごとに:

if ( month( date ) == 9 && day( date ) < 8 && DayOfWeek( date ) == 2 ) {
    holiday = 'labor day';
}

余談ですが、CF カスタム タグ ライブラリの有効な URL を知っている人はいますか?

4

1 に答える 1

4

Google カレンダーの米国の祝日フィードにアクセスしてキャッシュできます。無料の API キーを登録する必要があります。「FullCalendar」には、JS で使用するカレンダー アカウントを確立する手順が記載されていますが、構成が完了したら、CF を使用して JSON を使用できます。

http://fullcalendar.io/docs/google_calendar/

ブラウザー開発者の F12 ツールを使用して、このページでソースとサーバーの JSON 応答を表示します。

http://fullcalendar.io/js/fullcalendar-2.5.0/demos/gcal.html

使用する URL は次のようになります (ただし、独自の API キーを使用します)。

https://www.googleapis.com/calendar/v3/calendars/usa__en@holiday.calendar.google.com/events?key=AIzaSyDcnW6WejpTOCffshGDDb4neIrXVUA1EAE

返される JSON 応答には、休日情報と ISO8601 形式の日付を含む「items」配列が含まれます。

"items": [
  {
   "kind": "calendar#event",
   "etag": "\"2778476758000000\"",
   "id": "20140101_60o30dr46oo30c1g60o30dr4ck",
   "status": "confirmed",
   "htmlLink": "https://calendar.google.com/calendar/event?eid=MjAxNDAxMDFfNjBvMzBkcjQ2b28zMGMxZzYwbzMwZHI0Y2sgdXNhX19lbkBo",
   "created": "2014-01-09T03:32:59.000Z",
   "updated": "2014-01-09T03:32:59.000Z",
   "summary": "New Year's Day",
   "creator": {
    "email": "usa__en@holiday.calendar.google.com",
    "displayName": "Holidays in United States",
    "self": true
   },
   "organizer": {
    "email": "usa__en@holiday.calendar.google.com",
    "displayName": "Holidays in United States",
    "self": true
   },
   "start": {
    "date": "2014-01-01"
   },
   "end": {
    "date": "2014-01-02"
   },
   "transparency": "transparent",
   "visibility": "public",
   "iCalUID": "20140101_60o30dr46oo30c1g60o30dr4ck@google.com",
   "sequence": 0
  }
]

API 応答データを保存して (リモート API に依存せずにローカルで再利用できるようにするため)、ISO8601 日付をキー (yyyy-MM-DD) として使用して構造体を生成し、値を休日名の配列にすることをお勧めします。 . これを拡張して、連邦の「有給」休日かどうかを示すことができます。Google Calendar API (または休日の日付ライブラリ) がそれを識別できるとは思えないからです。

Holidays = {
   "2015-12-31" = ["New Year's Eve"],
   "2016-01-01" = ["New Year's Day"]
}

次に、次のようなものをロジックとして使用します。

holidayNames = '';
if (StructKeyExists(Holidays, DateFormat(theDate, "yyyy-MM-DD"))){
    holidayNames = ArrayToList(Holidays[DateFormat(theDate, "yyyy-MM-DD")]);
}

更新ColdFusion ベースのライブラリをグーグル検索しているときに、1 年前に GetGoogleHolidays UDF を作成したことに気付きました。(UDF は、Google カレンダー API を使用して米国の祝日の JSON データをフェッチし、祝日名の配列を含む YYYYMMDD キーを使用して構造体を生成し、それを 24 時間キャッシュします。)

http://gamesover2600.tumblr.com/post/104768724954/fetch-holiday-dates-from-google-calendar-api-using

于 2015-12-18T17:19:31.763 に答える