API を使用して勤務時間カレンダーを編集する

組織では、リソースのカレンダーに勤務時間をプログラムで作成、編集、削除する運用が一般的です。 カレンダーには、作業時間、休日、休憩時間が表示され、仕事のスケジュール設定時ににリソースが利用可能かどうかを判断します。 これらのリソースは、特定のタイムゾーンでスケジュールする必要があり、非営業時間を順守する場合もあれば、しない場合もあり、またキャパシティも変動します。 Field Service アプリでの作業時間の定義については、予約可能なリソースに作業時間を追加する にアクセスしてください。

Field Service アプリの使用に加えて、次の API を使用することで、選択したレコー ドタイプのカレンダー ルールを変更できます。

  • カレンダー API (msdyn_SaveCalendar) の保存により、リクエストとして渡された入力に基づいて、選択されたエンティティのカレンダー レコードを作成、更新します。
  • カレンダーの削除 API (msdyn_DeleteCalendar) は、リクエストとして渡された入力に基づいて、選択されたエンティティのすべての内部カレンダー ルールを削除します。
  • Save/Delete Calendar API V2 (msdyn_SaveCalendar/msdyn_DeleteCalendar, pass flag UseV2) では、重複ルールのロジックを変更することで、複数の勤務時間を同時に再作成することができます。 詳細については、重複するルールがある場合はどうなりますか? を参照してください。

この記事では、各APIの入力 (リクエスト) と出力 (レスポンス)、およびその使い方について、例を使って詳しく説明しています。

前提条件

  • プラットフォーム バージョン 9.2.21055、またはユニバーサル リソース スケジュール バージョン 3.12.45.7。
  • 次のレコード タイプのいずれかの使用方法:
    • 予約可能リソース (bookableresource)
    • リソース要件 (msdyn_resourcerequirement)
    • 勤務時間テンプレート (msdyn_workhourtemplate)
    • プロジェクト (msdyn_project)

カレンダーのイベント タイプ

カレンダーを作成する際には、ある 作業時間タイプ が 1 回、1 日中、毎週、または毎日何回発生するかを定義したり、繰り返しをカスタマイズを作成することができます。 これらのカレンダーイベントの詳細については、この記事後述のサンプル にアクセスしてください。

発生回数

ある作業時間のタイプが、エンティティのカレンダー上で一度だけ発生する場合、それを発生と呼びます。

たとえば、2021 年 5 月 26 日の午前 5 時から午前 10 時まで稼働しているリソースについて考えてみます。 これらの API は、同じ日に開始/終了するこのタイプのオカレンスのみをサポートします。 別の例として、2021 年 5 月 26 日の午後 8 時から 2021 年 5 月 27 日の午前 10 時まで稼働しているリソースについて考えてみます。 msdyn_SaveCalendar API の呼び出しを 1 回だけ使用して、このオカレンスを作成できないため、代わりに 2 回呼び出す必要があります。

終日のオカレンス

ある作業時間のタイプが、開始日の午前 12:00 を起点として、丸一日、またはそれ以上の期間発生する場合は、終日のオカレンスとなります。 終日オカレンスの最大期間は 5 年間です。

たとえば、あるリソースが 2021 年 5 月 26 日から 2021 年 5 月 30 日の終わりまで終日作業する場合です。 これは、5 日間続く終日のオカレンスです。

週単位の繰り返し

ある作業時間タイプが、毎週特定の日に同じ時間に発生する場合、それを週次の反復と呼びます。

たとえば、あるリソースが毎週月曜日、火曜日、水曜日の午前 5 時から午前 10 時まで作業する場合です。

日次の繰り返し

ある作業時間タイプが、毎日に同じ時間に発生する場合、それを日次の反復と呼びます。

たとえば、あるリソースが毎日午前 5 時から午前 10 時まで作業する場合です。

繰り返しのカスタマイズ

ある作業時間タイプが特定の曜日の特定の時間に発生するが、日によってその時間が異なる場合、繰り返しのカスタマイズを作成することができます。

たとえば、あるリソースが毎週月曜日の午前 5 時から午前 10 時まで、毎週水曜日の午後 12 時から午後 3 時まで作業する場合です

作業時間のタイプ

これらの API は、次の作業時間タイプの作成、更新、削除操作に対応します:

作業時間

労働時間は、エンティティが作業を実行できる時間です。

これらの API を使用して、次のことができます:

  • 勤務時間のオカレンスを作成、編集、削除。
  • 勤務時間の日次の繰り返しを作成、編集、削除。
  • 勤務時間の週次の繰り返しを作成、編集、削除。
  • 勤務時間のカスタマイズした繰り返しを作成、編集、削除。
  • 終日の作業時間を作成、編集、削除。
  • 作業時間のキャパシティを作成または編集。
  • 繰り返しの単一の作業時間のオカレンスを編集。
  • 繰り返しでこれと次のオカレンスを編集。
  • 労働時間のオカレンスを繰り返しに変更する。
  • カレンダー ルールのタイム ゾーンの変更。

この API では、次のことには対応していません:

  • 繰り返しから 1 つの作業時間のオカレンスを削除する。
  • 24 時間に渡るが、真夜中 (午前 12 時) に開始、終了しないオカレンスを作成する。
  • 終日の繰り返しの作成、編集、削除。

非稼働時間

不特定の理由により作業ができない期間を表わします。

これらの API を使用して、次のことができます:

  • 終日の非稼働時間の作成、編集します。
  • 非稼働時間のオカレンスを作成、編集する。
  • カレンダー ルールのタイム ゾーンの変更。

これらの API では、次のことに対応していません:

  • 非稼働時間の繰り返しを作成、編集する。

Break

1 日の中で、エンティティが休憩を取り、作業に従事しない時間帯を表わします。 休憩時間は作業時間がなければ存在しません。1 日のうちの 2 つの作業時間がある場合に間に発生する必要があります。 休憩時間が作業時間と重ねることはできません。

これらの API を使用して、次のことができます:

  • 作業時間の間の休憩の作成と編集。

これらの API では、次のことに対応していません:

  • 作業時間のオカレンスや繰り返しから、休憩時間のみを削除する。

休暇

休暇により作業ができない期間を表わします。 休暇の理由は入力できます。

これらの API を使用して、次のことができます:

  • ラベルを使用して休暇を作成または編集する。
  • カレンダー ルールのタイム ゾーンの変更。

これらの API では、次のことに対応していません:

  • 非稼働時間の繰り返しを作成、編集する。

休業日

休業日のエンティティを作成 して、休業時間を設定します。 msdyn_SaveCalendar API を使用すると、オプションの ObserveClosure キーを使って、すべてのエンティティに対して組織の業務終了時間を順守するか無視するかを設定できます。 これらの休業期間が設定されると、エンティティは作業ができなくなります。

カレンダーの API を保存する

input

リクエストには、CalendarEventInfo 属性が 1 つだけ含まれており、これは文字列タイプです。 他にもいくつかの属性があり、それらはすべて、この文字列に埋め込まれています。

Note

以下の表では、タイプはリクエストを成功させるために必要なフォーマットを表しています。 ただし、リクエスト全体は 1 つの文字列として解析されます。

CalendarEventInfo

件名 タイプ 必須 説明
EntityLogicalName String はい このキーは、API の呼び出し元となるエンティティを表します。 このエンティティのカレンダーが作成、編集されます。
CalendarId GUID はい このキーには、上記のエンティティに関するカレンダー ID が含まれています。 これらのエンティティのいずれかが作成されると、カレンダー レコードも自動的に作成されます。 これらの API は、ルールを追加するか、既存のルールを編集することにより、そのカレンダー レコードを編集します。
RulesAndRecurrences RulesAndRecurrences はい このキーは配列で、各要素には次の表にあるような複数の属性が含まれています。 配列のサイズは少なくとも 1 つである必要があります。
IsVaried Boolean いいえ このキーは、カスタムの繰り返しシナリオでは true に設定する必要があります。
IsEdit Boolean いいえ 既存のルールを編集する場合は、このキーを true に設定する必要があります。
TimeZoneCode Integer いいえ このキーは、カレンダー ルールのタイムゾーンに対応した整数値を取ります。 マッピングについては、この記事後半のタイム ゾーン コードを参照してください。 既定の値はユーザーのタイムゾーンです。
InnerCalendarDescription String いいえ このキーは、カレンダールールが休暇用である場合にのみ必要となります。 休暇の理由が含まれている必要があります。
ObserveClosure Boolean いいえ このキーは繰り返しに固有のものです。 true に設定されている場合、エンティティは休業を順守します。
RecurrenceEndDate DateTime いいえ このキーは繰り返しに固有のものです。 再発の終了日が含まれています。 タイムスタンプが 08:00:00 以前の場合、繰り返し終了日は指定日の前日です。 タイムスタンプが08:00:01以降の場合、日付はそのまま保持されます。 オカレンスの既定の値は null です。 繰り返しの既定値は、9999 年 12 月 30 日、23:59:59、UTC です ()。
RecurrenceSplit Boolean いいえ このキーは繰り返しに固有のものです。 「これ以降の繰り返し」を編集するために true に設定されています。
ResourceId GUID いいえ このキーには SystemUserIdResourceId が含まれており、この通話に関連するエンティティが SystemUser タイプの予約可能なリソースである場合にのみ渡されます。 これは、サービス管理 タブで OwnCalendar の権限を確認するために必要となります。
V2 を使用する フラグ いいえ このフラグを渡すと、作業時間カレンダーの V2 バージョンが有効になり、重複ルール ロジックが強化され、複数回の繰り返しが可能になります。 詳細については、重複するルールがある場合はどうなりますか? を参照してください。

RulesAndRecurrences

件名 タイプ Required Description
ルール ルール はい このキーは配列で、各要素には次の表にあるような複数の属性が含まれています。 配列のサイズは少なくとも 1 つである必要があります。
RecurrencePattern String いいえ このキーは繰り返しに固有のものです。 対応しているパターンは次のものです: FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SABYDAY は少ない日数を含むように変更できますが、FREQINTERVAL は変更できません。
InnerCalendarId GUID いいえ このキーは編集に固有のものです。 ルールが編集されている場合は、InnerCalendarId をここに渡す必要があります。 もし InnerCalendarId が渡されない場合、IsEdit キーが true に設定されていたとしても、API は新規ルールを作成します。
操作​​ Integer いいえ このキーはカスタマイズした繰り返しに固有のものです。 カスタマイズした繰り返しを作成、編集する場合は、次のいずれかの番号を入力する必要があります:
  • (1) 繰り返しに 1 日追加する
  • (2) 繰り返しから 1 日削除する
  • (3) 開始日時のみの編集、またはキャパシティの編集
  • (4) (3) に記載されているキー以外の編集

ルール

件名 タイプ 必要 内容
StartTime 日時 はい このキーには、ISO 形式の日時エントリが含まれています。 たとえば、\"2021-05-15T12:00:00.000Z\" などとします。 時間の部分は、既に指定したタイムゾーンでの作業時間の開始時間を決定します。 日付部分は、作業時間の開始日を決定します。 ここでは、2021 年 5 月 15 日をオカレンスまたは繰り返しの開始日としています。 パターンが BYDAY=TU,WE であっても、日付が 5月15日 (土曜日) となっていれば、API は自動的に 5 月 15 日以降のすべての火曜と水曜のルールを作成、編集します。 これは、ルールに日付が対応する必要がない場合です。
EndTime 日時 はい これには、ISO 形式の日時エントリが含まれています。 たとえば、\"2021-05-15T12:00:00.000Z\" などとします。 時間の部分は、既に指定したタイムゾーンでの作業時間の終了時間を決定します。 日付部分には、StartTime の日付部分と同じ日付が含まれている必要があります 。 この例外を次に示します:
  • 終日のオカレンスである場合。 この場合、日付部分には終日のオカレンスの終了日を反映させる必要があります。
  • オカレンスは 1 日の終わり、つまり翌日の午前 12 時に終了します。 この場合、日付は \"2021-05-16T00:00:00.000Z\" でなければなりません。 繰り返しの終了日を指定するには、RecurrenceEndDate 属性を変更します。
WorkHourType Integer はい このキーには、以下のオプションのいずれかに対応する番号が含まれています:
  • (0) 作業中
  • (1) 休憩
  • (2) 非稼働中
  • (3) 休暇
工数 整数 いいえ このキーは、エンティティのキャパシティを決定します。 この値は整数で入力してください。 既定値は 1 です。

出力

この POST API は、選択したエンティティのカレンダールールのレコードを作成、変更します。 また、次の出力が得られます。

件名 タイプ 説明
InnerCalendarIds String POST 操作の結果となる InnerCalendarIds GUID 列です。

カレンダー削除 API

入力

件名 タイプ 必須 説明
EntityLogicalName String はい このフィールドは、カレンダールールを削除するエンティティを記述します。
InnerCalendarId GUID はい このフィールドは、InnerCalendarId の ID を記述しており、削除する必要があります。 1 つのルールに複数の InnerCalendarIds が関連付けられている場合、ここでは任意の ID ひとつで十分です。 内側と外側のカレンダーの詳細: カレンダー エンティティ
CalendarId GUID はい このフィールドは、エンティティの CalendarId を記述します。
IsVaried Boolean いいえ このフィールドは繰り返しに固有のもので、カスタマイズした繰り返しルールを削除する場合は yes に設定します。
V2 を使用する フラグ いいえ このフラグを渡すと、作業時間カレンダーの V2 バージョンが有効になり、重複ルール ロジックが強化され、複数回の繰り返しが可能になります。 詳細については、重複するルールがある場合はどうなりますか? を参照してください。

出力

この POST API は、選択したエンティティのカレンダールールのレコードを削除します。 さらに、次の出力が得られます。

件名 タイプ 内容
InnerCalendarIds String POST 操作の結果となる InnerCalendarIds GUID 列です。

カレンダー API の読み込み

input

件名: msdyn_LoadCalendars
種類: アクション
説明: 指定された LoadCalendarsInput のカレンダーを返します。

件名: msdyn_LoadCalendars.LoadCalendarsInput
種類: パラメーター
説明: 以下の JSON 形式の文字列です:

{
   StartDate: string,
   EndDate: string,
   CalendarIds: string[]
}

件名: msdyn_LoadCalendarsResponse
種類: ComplexType
説明: msdyn_loadCalendars アクションからの応答を含みます。

件名: msdyn_LoadCalendarsResponse.CalendarEvents
種類: プロパティ
説明: 以下の JSON 形式の文字列です:

{
"calendarId": CalendarEventSlot[]
}

calendarId はカレンダーの Guid を表す適切な guid であり、CalendarEventSlot が次の形式のオブジェクトの場合:

{
  CalendarId: string,
  InnerCalendarId: string,
  Start: string,
  End: string,
  Effort: double
}

API を呼び出す方法

これらの API は、ブラウザを使用して呼び出すことができます。

  1. ブラウザを開き、カレンダーを変更する必要のある組織を開きます。
  2. 開発ツールを開きます (Microsoft Edge では Ctrl+シフト+I を選択、Google Chrome では F12 を選択)。
  3. コンソールで、[org-name] を組織の詳細に置き換えた後、次の関数を入力します (例 : http://your_org.crm.dynamics.com):
       function CalendarAction(action, data) {
           let req = new XMLHttpRequest();
           req.open("POST", "**[org-name]**/api/data/v9.0/" + action, true);
           req.setRequestHeader("OData-MaxVersion", "4.0");
           req.setRequestHeader("OData-Version", "4.0");
           req.setRequestHeader("Accept", "application/json");
           req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
           req.setRequestHeader("Prefer", 'odata.include-annotations="*"');
           req.onreadystatechange = function () {
               if (this.readyState === 4) {
                   req.onreadystatechange = null;
                   if(this.status == 200) {
                       console.log(JSON.parse(this.response));
                   } else {
                       console.error(JSON.parse(this.response));
                   }
               }
           };
           req.send(JSON.stringify(data));
       }
  1. この関数を定義した後、API を使用してこの関数を呼び出し、カレンダーを作成、編集、または削除できます。 次の呼び出しを入力して、カレンダーを保存します:
       CalendarAction("msdyn_SaveCalendar",{
           "CalendarEventInfo":"{
               \"CalendarId\":\"df0857c4-50f5-4576-8e89-f236670ad2d5\",
               \"EntityLogicalName\":\"bookableresource\",
               \"TimeZoneCode\":92,\"StartDate\":\"2021-04-25T00:00:00.000Z\",
               \"IsVaried\":false,
               \"RulesAndRecurrences\":[{
                   \"Rules\":[{
                       \"StartTime\":\"2021-04-25T08:00:00.000Z\",
                       \"EndTime\":\"2021-04-25T17:00:00.000Z\",
                       \"Duration\":540,
                       \"Effort\":1
                   }]
               }]
           }"
       })

次の呼び出しを入力して、カレンダーを削除します:

       CalendarAction("msdyn_DeleteCalendar", {
           "CalendarEventInfo":"{
               \"CalendarId\":\"8390358c-77d0-430f-b176-f27adadac8eb\",
               \"EntityLogicalName\":\"bookableresource\",
               \"InnerCalendarId\":\"cf508c2c-5c55-485c-be1e-d2ebcb385441\"
           }"
       })
       

ニーズに応じたさまざまな呼び出し方法の例については、次のセクションを参照してください。 手順 3 の関数呼び出しの actionmsdyn_SaveCalendar または msdyn_DeleteCalendar に置き換え、data を該当する CalendarEventInfo に置き換えます。

msdyn_SaveCalendar の Power Automate 呼び出しアクションについては、次のスクリーンショットも参照してください: msdyn_SaveCalendar の Power Automate 呼び出しアクション。

API 使用のシナリオ例

これらの API を使用可能ないくつかのシナリオを見ていきましょう。

ボブとティムは、ワシントン州ベルビューにある Contoso Enterprises の配達用トラックの運転手です。 コーディネーターのデビーは、勤務時間カレンダーの変更を担当しています。 デビーは、msdyn_SaveCalendarmsdyn_DeleteCalendar API を使用してこれらの変更を行います。

作業時間のオカレンスを作成する。

ボブは、2021 年 5 月 15 日の午前 9 時から午後 5 時まで荷物を配達するために車で移動する予定です。 デビーは msdyn_SaveCalendar API を使用します。

要求

{
 "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-15T09:00:00.000Z\",\"EndTime\":\"2021-05-15T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}]}]}"
}

回答

{
  "InnerCalendarIds": "[\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"]"
}

作業時間のオカレンスを編集する。

その後、ボブのスケジュールは、2021 年 5 月 15 日の午前 10 時に開始するように変更されます。 デビーは msdyn_SaveCalendar API を使用します。

要求

{
 "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"IsEdit\":\"true\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-15T10:00:00.000Z\",\"EndTime\":\"2021-05-15T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}], \"InnerCalendarId\":\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"}]}"
}

回答

{
  "InnerCalendarIds": "[\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"]"
}

作業時間のオカレンスを削除する。

ボブは家族の緊用が発生したため、一日の仕事をキャンセルする必要が生じました。 デビーは msdyn_DeleteCalendar API を使用します。

Request

{
 "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"InnerCalendarId\":\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"}"
}

Response

{
  "InnerCalendarIds": "[\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"]"
}

作業時間の 1 日の繰り返し作成する

2021 年 5 月 20 日から、Bob は 1 週間、午前 8 時から午後 5 時まで Contoso と連携することを決定し、2021 年 7 月 15 日にそこでの作業を停止します。

Request

{
 "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RecurrenceEndDate\":\"2021-07-15T00:00:00.000Z\",\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-20T08:00:00.000Z\",\"EndTime\":\"2021-05-20T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA\"}]}"
}

Response

{
  "InnerCalendarIds": "[\"20f6cfa7-cfbe-eb11-a81d-000d3a6e4359\"]"
}

キャパシティを増量して、毎日の作業時間を編集します

ボブは、2021 年 6 月 15 日の 1 週間、休暇が必要なため、仕事を休むことにしました。 その日までは、ボブは以前に同意した一週間の作業スケジュールを継続していきます。 デビーは、 msdyn_SaveCalendar API を使用してこれらの変更を行います。

要求

{
 "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RecurrenceEndDate\":\"2021-06-15T00:00:00.000Z\",\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-20T08:00:00.000Z\",\"EndTime\":\"2021-05-20T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"InnerCalendarId\":\"20f6cfa7-cfbe-eb11-a81d-000d3a6e4359\",\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA\"}]}"
}

回答

{
  "InnerCalendarIds": "[\"867a2461-cdbe-eb11-a81d-000d3a6e4359\"]"
}

作業時間の週次の繰り返し作成します

2021 年 6 月 16 日から、ボブは水曜日と金曜日の午前 8 時から午後 5 時まで勤務し、午後 12 時から午後 12 時 30 分まで昼食休憩を取ります。 デビーは msdyn_SaveCalendar API を使用するが、間違えて休憩時間を午後 12 時から午後 1 時までのスケジュールにしてしまいました。

Request

{
  "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-06-16T08:00:00.000Z\",\"EndTime\":\"2021-06-16T12:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}, {\"StartTime\":\"2021-06-16T12:00:00.000Z\",\"EndTime\":\"2021-06-16T13:00:00.000Z\",\"Effort\":null,\"WorkHourType\":1}, {\"StartTime\":\"2021-06-16T13:00:00.000Z\",\"EndTime\":\"2021-06-16T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=WE,TH,FR\"}]}"
}

Response

{
  "InnerCalendarIds": "[\"1f894441-d0be-eb11-a81d-000d3a6e4359\"]"
}

毎週繰り返す作業時間の休憩時間を編集する

デビーは msdyn_SaveCalendar API を使用して間違いを修正し、休憩を午後 12 時から午後 12 時 30 分に変更します。

要求

{
  "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"IsEdit\":\"true\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-06-15T08:00:00.000Z\",\"EndTime\":\"2021-06-15T12:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}, {\"StartTime\":\"2021-06-15T12:00:00.000Z\",\"EndTime\":\"2021-06-15T12:30:00.000Z\",\"Effort\":null,\"WorkHourType\":1}, {\"StartTime\":\"2021-06-15T12:30:00.000Z\",\"EndTime\":\"2021-06-15T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"InnerCalendarId\":\"1f894441-d0be-eb11-a81d-000d3a6e4359\",\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=WE,TH,FR\"}]}"
}

回答

{
  "InnerCalendarIds": "[\"1f894441-d0be-eb11-a81d-000d3a6e4359\"]"
}

作業時間のカスタマイズした繰り返しを作成する

ティムは、月曜日の午前 8 時から午後 5 時まで、水曜日の午前 11 時から午後 3 時まで Contoso で働いています。 ティムは、2021 年 5 月 16 日に Contoso で働き始めました。 デビーは msdyn_SaveCalendar API を使用して、ティムの作業時間を作成しました。

要求

{
"CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"IsVaried\":true,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-16T08:00:00.000Z\",\"EndTime\":\"2021-05-16T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"Action\":1,\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=MO\"},{\"Rules\":[{\"StartTime\":\"2021-05-16T11:00:00.000Z\",\"EndTime\":\"2021-05-16T15:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"Action\":1,\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=WE\"}]}"
}

回答

{
  "InnerCalendarIds": "[\"9fb8c199-d1be-eb11-a81d-000d3a6e4359\", \"a2b8c199-d1be-eb11-a81d-000d3a6e4359\"]"
}

作業時間のカスタマイズした繰り返しを編集する

ティムのスケジュールを変更します。彼の勤務時間は、水曜日の午後 5 時から午後 8 時、木曜日の午前 10 時から午後 12 時です。 ティムのスケジュールから月曜日が削除されます。 デビーは msdyn_SaveCalendar API を使用してこれを削除します。

Request

{
"CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"IsVaried\":true,\"IsEdit\":true,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-16T08:00:00.000Z\",\"EndTime\":\"2021-05-16T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"Action\":2,\"InnerCalendarId\":\"9fb8c199-d1be-eb11-a81d-000d3a6e4359\",\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=MO\"},{\"Rules\":[{\"StartTime\":\"2021-05-16T17:00:00.000Z\",\"EndTime\":\"2021-05-16T20:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"Action\":3,\"InnerCalendarId\":\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\",\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=WE\"}, {\"Rules\":[{\"StartTime\":\"2021-05-16T10:00:00.000Z\",\"EndTime\":\"2021-05-16T12:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"Action\":1,\"InnerCalendarId\":null,\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=TH\"}]}"
}

Response

{
  "InnerCalendarIds": "[\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\", \"942bda0f-d3be-eb11-a81d-000d3a6e4359\"]"
}

繰り返し内の労働時間のオカレンスを編集する

2021 年 5 月 26 日、ティムは午後 1 時から午後 7 時までしか作業できません。 この場合もデビーは msdyn_SaveCalendar API を使用します。

Request

{
 "CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-26T13:00:00.000Z\",\"EndTime\":\"2021-05-26T19:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}], \"InnerCalendarId\":\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\"}]}"
}

Response

{
  "InnerCalendarIds": "[\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\"]"
}

作業時間のカスタマイズした繰り返しを削除する

ティムが会社を辞めることになり、スケジュールをすべて削除しなければなりません。 この場合もデビーは msdyn_DeleteCalendar API を使用します。

Request

{
 "CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"InnerCalendarId\":\"34d2210c-9fb6-eb11-a820-000d3afb1dba\",\"IsVaried\":true}"
}

Response

{
  "InnerCalendarIds": "[\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\", \"942bda0f-d3be-eb11-a81d-000d3a6e4359\"]"
}

休暇を作成する

ティムは 2021 年 6 月 9 日から家族休暇のため、3 日間休みます。

要求

{
 "CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"InnerCalendarDescription\":\"Family Vacation\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-06-15T00:00:00.000Z\",\"EndTime\":\"2021-06-17T00:00:00.000Z\",\"Effort\":1,\"WorkHourType\":3}]}]}"
}

回答

{
  "InnerCalendarIds": "[\"266c434e-d5be-eb11-a81d-000d3a6e4359\"]"
}

終日の作業時間を作成する

ティムは 2021 年 5 月 20 日から 72 時間のシフトです。 デビーは msdyn_SaveCalendar API を使用して、ティムの作業時間を作成しました。

Request

{
 "CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-20T00:00:00.000Z\",\"EndTime\":\"2021-05-22T00:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}]}]}"
}

Response

{
  "InnerCalendarIds": "[\"6e160a8e-d5be-eb11-a81d-000d3a6e4359\"]"
}

FAQ

「StartTime は、EndTime よりも後、または同じ時間に設定できません」というエラーが表示されます。

異なるカレンダー ルールの時間帯が重複していないか確認してください。 日付をチェックして StartTimeEndTime よりも遅くなっていないことを確認してください。 また、時刻が 24 時間形式に従っていることを確認してください。

API を使用して "作業時間テンプレート" エンティティを更新できますか?

はい、この API を使用して、リソースの作業時間に加えて、作業時間テンプレートを作成および更新できます。

Microsoft.Dynamics.UCICalendar.Plugins.SaveCalendarContract+CalendarEventInfo タイプのオブジェクトの逆シリアル化中にエラーが発生しました。入力ソースが正しくフォーマットされていません。 入力ソースは、正しく書式設定されていません。
or
期待する状態 'Element'。 名前 '', namespace ''." を持つ 'Text' に遭遇しました。

文字列が正しく解析されていることを確認してください。 角かっこ、コンマ、セミコロンが欠落している可能性があります。

次のエラーが表示されます: 「無効な繰り返しパターンです。 サポート対象のパターンについては、このドキュメントを参照してください。

対応しているパターンは次のものです: FREQ=DAILY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SABYDAY は少ない日数を含むように変更できますが、FREQINTERVAL は変更できません。 パターンにスペースが含まれていないことを確認してください。

リソースの CalendarId と InnerCalendarId の情報を取得するにはどうすればよいですか?

CalendarId は、リソースの属性から取得できます。 この情報を取得するには、研ぎを呼び出してください: [org-url]/api/data/v9.1/bookableresources([bookableresourceGUID])

前の呼び出しの例は次のようになります: [org-url]/api/data/v9.1/bookableresources(7bb0224b-6712-ec11-94f9-000d3a6d888e)

InnerCalendarId は、カレンダーの属性から取得できます。 この情報を取得するには、研ぎを呼び出してください: [org-url]/api/data/v9.1/calendars([calendar-id-from-above-call])?$expand=calendar_calendar_rules

前の呼び出しの例は次のようになります: [org-url]/api/data/v9.1/calendars(02481736-1b6a-4d49-9ebd-a5bd041c1c99)?$expand=calendar_calendar_rules

ルールが重複している場合はどうなりますか?

ルールが該当するランクはいくつかあります:

  • ランク1 - 日次の繰り返し (動作中/非動作中)、および休暇の発生。
  • ランク0 - 週次の繰り返し (機能している/機能していない)。

V2 ルールの重複

  • ランク 1 のルールは、ランク 0 のルールよりも優先されます。 そのため、同じ日に 2 つのルール (各ランクのいずれか) があった場合、毎日の繰り返し、または休暇の発生が毎週の繰り返しよりも優先されます。
  • 同じ期間内に複数のランク 0 ルールがある場合:
    • 時間が交差しない場合は、両方ともカレンダー上に残ります。
    • 時間帯が交差する場合、最も最近に作成/変更されたルールが、リソースのカレンダーとして考慮されます。 期間内で交差する他のルールはすべて削除されます。 ランク 0 ルールの一部の日付に交差があり、他の日付には交差がない場合、ルールは結合されて非交差セクションが保持され、交差部分は削除されます。

V2 カレンダーの動作の例:

例 1 - 勤務時間の繰り返し: 重複する日付/時刻がない場合

特定の期間において、技術者は異なる日にわたって午前、午後、または夜勤で勤務します。

  1. 指定された日付範囲に対して最初の繰り返しカレンダー ルールを作成します。 例: 月曜、火曜を繰り返す; 1.1-4.1; 東部時間午前 8 時~午後 5 時

  2. 勤務時間が前の日や時刻と重ならないように、交差する日付範囲に対して 2 番目の繰り返しカレンダー ルールを作成します。 例: 水、木を繰り返す; 1.1-4.1; 東部時間午前 8 時~午後 5 時 または 月曜、火曜を繰り返す; 1.1-4.1; 東部時間午後 5 時~午後 8 時

結果: 両方のカレンダー ルールが残り、互いに共存します。

例 2 - 勤務時間の繰り返し: いくつかの重複する日付、すべての重複する日、および 2 番目のルールが最初のルールの前または後に開始/終了する

技術者は、古いスケジュールの数週間を置き換える新しい作業スケジュールを取得します。 契約により、彼らは毎週同じ曜日に働きます。

  1. 指定された日付範囲に対して最初の繰り返しカレンダー ルールを作成します。 例: 月曜、火曜を繰り返す; 2.1-4.1; 東部時間午前 8 時~午後 5 時

  2. すべての日の勤務時間が重複する、重複する日付範囲に対して 2 番目の繰り返しカレンダー ルールを作成します。 この新しいルールの開始日/終了日は、最初のルールの開始日/終了日よりも前または後のものを選択してください。 例: 月曜、火曜を繰り返す; 3.1-5.1; 東部時間午後 1 時~午後 8 時

結果: 最初のルールは、2 番目のルールの開始日と終了日を収容するために切り詰められます。 例: 月、火を繰り返す; 2.1-2.28; 東部時間午前 8 時~午後 5 時 および 月曜、火曜を繰り返す; 3.1-5.1; 東部時間午後 1 時~午後 8 時

例 3 - 勤務時間の繰り返し: すべての重複する日付/時刻が一部ある場合

技術者は 2 ヶ月の有期雇用契約社員です。 彼らは、いくつかの日に追加の仕事を引き受けることに同意しています。 彼らは火曜日の勤務時間を早め/遅い時間に変更したいと考えています。

  1. 指定された日付範囲に対して最初の繰り返しカレンダー ルールを作成します。 例: 月、火を繰り返す; 2.1-4.1; 東部時間午前 8 時~午後 12 時 および 月曜、水曜を繰り返す; 2.1-4.1; 東部時間午後 1 時~午後 5 時

  2. 同じ日付範囲の新しい繰り返しカレンダーのルールを作成します。 元のルールと部分的に重なる曜日/時間を選択してください。 例: 火曜日、木曜日を繰り返す; 2.1-4.1; 東部時間午前 10 時~午後 2 時

結果: 新しいルールは重複がある古いルールを上書きし、他のルールは変更しないままにします。 例: 月を繰り返す; 2.1-4.1; 東部時間午前 8 時~午後 12 時 および 水曜日を繰り返す; 2.1-4.1; 東部時間午後1時~午後5時 および 火曜日、木曜日を繰り返す; 2.1-4.1; 東部時間午前 10 時~午後 2 時

例 4 - 勤務時間の繰り返し: 古いルール内に新しいルールの日付が含まれており、重複する日/時間がいくつかあります

技術者は毎週月曜から金曜の午前 8 時から午後 5 時まで勤務します。 2 週間だけ、毎週月曜から水曜まで、午前 6 時から午後 6 時まで異なる勤務時間で、特別な緊急プロジェクトに取り組むことになります。

  1. 指定された日付範囲に対して最初の繰り返しカレンダー ルールを作成します。 例: 月、火、水、木、金を繰り返す; 1.1 - 終了日なし; 東部時間午前 8 時~午後 5 時

  2. 上記の日付範囲内に含まれる 2 番目の繰り返しカレンダー ルールを作成し、一部の日に重なる勤務時間を選択します。 例: 月曜、火曜、水曜を繰り返す; 5.1-5.14; 東部時間午前 6 時~午後 6 時

結果: この演習が終了するまでに、カレンダーには 4 つの繰り返しルールが追加されるはずです。

  • 最初のルールを 2 番目のルールの開始日までに切り詰めます
  • 2 番目のカレンダー ルール
  • 最初のルールと同様の新しいルールを作成しますが、重複しない日については 2 番目のルールの日付を使用します
  • 最初のルールを切り捨て、2 番目のルールの終了日から開始する

例: 月、火、水、木、金の繰り返し; 1.1~4.30; 東部時間午前 8 時~午後 5 時 および 月、火、水の繰り返し; 5.1-5.14; 東部時間午前 6 時~午後 6 時 および 木曜、金曜の繰り返し; 5.1-5.14; 東部時間午前 8 時~午後 5 時 および 月、火、水、木、金の繰り返し; 5.15 – 終了日なし。東部時間午前 8 時~午後 5 時

例 5 - 非反復労働時間 (発生、ランク 1 ルール)

技術者にはチームの結束日が設定されており、その日の他のすべての勤務時間インスタンスよりも優先されます。

  1. 指定された日付範囲に対して繰り返しカレンダー ルールを作成します。 例: 月、火、水、木、金を繰り返す; 1.1 - 終了日なし; 東部時間午前 8 時~午後 5 時

  2. 上記の日付範囲内に含まれる非繰り返しカレンダー ルールを作成します。 いくつかの日に重なる勤務時間を選択します。 例: 非繰り返し; 6.21; 東部時間午前 7 時~午後 1 時

結果: カレンダーには、この演習終了までに 1 つの繰り返しのないルール (オカレンス) があるはずです。 非繰り返しルールは、一日中重複する繰り返しイベントをオーバーライドします。 例: 月、火、水、木、金の繰り返し; 1.1 - 終了日なし ただし 6.21; 非繰り返し; 6.21; 東部時間午前 7 時~午後 1 時

V1 ルールの重複

  • ランク 1 のルールは、ランク 0 のルールよりも優先されます。 そのため、同じ日に 2 つのルール (各ランクのいずれか) があった場合、毎日の繰り返し、または休暇の発生が毎週の繰り返しよりも優先されます。
  • 同じランクのルールが 2 つある場合、最後に作成/変更されたルールが、リソースのカレンダーで考慮されるルールになります。
  • 終日の繰り返しはランク 1 であるため、繰り返しの勤務時間を追加して尊重してもらうために、週単位の繰り返しに変更をご検討いただくことをお勧めします。
  • 労働時間が存在し、それに重なる形で時間外発生が発生した場合、時間外発生が尊重され、労働時間としての残り時間はそのまま残るような形でルールが分岐します。 たとえば、9 月 21 日に午前 8 時から午後 5 時までの勤務時間があり、午後 3 時から午後 7 時までの時間外発生が追加された場合、勤務時間は午後 8 時から午後 3 時まで、時間外は午後 3 時から午後 7 時までとして解決されます。 しかし、タイムスロットに関係なく、ルールが逆の順番で作成されていた場合 (休暇が先に作成され、続いて労働時間が作成された場合)、労働時間のみが再選択されます。 休暇は無効になります。

タイム ゾーン コード

列挙型 タイム ゾーン
0 (GMT-12:00) 国際日付変更線西側
1 (GMT+13:00) サモア
2 (GMT-10:00) ハワイ
3 (GMT-09:00) アラスカ
4 (GMT-08:00) 太平洋標準時 (米国およびカナダ)
5 (GMT-08:00) バハ カリフォルニア
6 (GMT-11:00) 世界協定時刻 -11
7 (GMT-10:00) アリューシャン諸島
8 (GMT-09:30) マルキーズ諸島
9 (GMT-09:00) 協定世界時-09
10 (GMT-07:00) 山地標準時 (米国およびカナダ)
11 (GMT-08:00) 協定世界時-08
12 (GMT-07:00) チワワ、ラパス、マサトラン
15 (GMT-07:00) アリゾナ
20 (GMT-06:00) 中部標準時 (米国およびカナダ)
25 (GMT-06:00) サスカチュワン
29 (GMT-06:00) グアダラハラ、メキシコ シティ、モンテレイ
33 (GMT-06:00) 中央アメリカ
34 (GMT-06:00) イースター島
35 (GMT-05:00) 東部標準時 (米国およびカナダ)
40 (GMT-05:00) インディアナ東部
43 (GMT-05:00) ハイチ
44 (GMT-05:00) ハバナ
45 (GMT-05:00) ボゴタ、リマ、キト、リオ ブランコ
47 (GMT-04:00) カラカス
50 (GMT-04:00) 大西洋標準時 (カナダ)
51 (GMT-05:00) タークス・カイコス諸島
55 (GMT-04:00) ジョージタウン、ラパス、サンフアン
56 (GMT-04:00) サンティアゴ
58 (GMT-04:00) クイアバ
59 (GMT-04:00) アスンシオン
60 (GMT-03:30) ニューファンドランド
65 (GMT-03:00) ブラジリア
69 (GMT-03:00) ブエノスアイレス
70 (GMT-03:00) カイエンヌ、フォルタレザ
71 (GMT-03:00) サルバドル
72 (GMT-03:00) サンピエール・ミクロン
73 (GMT-03:00) グリーンランド
74 (GMT-03:00) モンテビデオ
75 (GMT-02:00) 中央大西洋
76 (GMT-02:00) 協定世界時 -02
77 (GMT-03:00) アラグァイナ
80 (GMT-01:00) アゾレス諸島
83 (GMT-01:00) カーボベルデ諸島
84 (GMT+01:00) カサブランカ
85 (GMT+00:00) ダブリン、エジンバラ、リスボン、ロンドン
90 (GMT+00:00) モンロビア、レイキャビク
92 (GMT) 世界協定時刻
95 (GMT+01:00) ベオグラード、ブラチスラバ、ブダペスト、リュブリャナ、プラハ
100 (GMT+01:00) サラエボ、スコピエ、ワルシャワ、ザグレブ
105 (GMT+01:00) ブリュッセル、コペンハーゲン、マドリード、パリ
110 (GMT+01:00) アムステルダム、ベルリン、ベルン、ローマ、ストックホルム、ウィーン
113 (GMT+01:00) 西中央アフリカ
115 (GMT+02:00) キシナウ
120 (GMT+02:00) カイロ
125 (GMT+02:00) ヘルシンキ、キエフ、リガ、ソフィア、タリン、ビリニュス
129 (GMT+02:00) アンマン
130 (GMT+02:00) アテネ、ブカレスト
131 (GMT+02:00) ベイルート
133 (GMT+02:00) ダマスカス
134 (GMT+03:00) イスタンブール
135 (GMT+02:00) エルサレム
140 (GMT+02:00) ハラーレ、プレトリア
141 (GMT+02:00) ウィントフック
142 (GMT+02:00) ガザ、ヘブロン
145 (GMT+03:00) モスクワ、サンクトペテルブルク
150 (GMT+03:00) クウェート、リヤド
151 (GMT+03:00) ミンスク
155 (GMT+03:00) ナイロビ
158 (GMT+03:00) バグダッド
159 (GMT+02:00) カリーニングラード
160 (GMT+03:30) テヘラン
165 (GMT+04:00) アブダビ、マスカット
169 (GMT+04:00) バクー
170 (GMT+04:00) エレバン
172 (GMT+04:00) ポートルイス
173 (GMT+04:00) トビリシ
174 (GMT+04:00) イジェフスク、サマーラ
175 (GMT+04:30) カブール
176 (GMT+04:00) アストラハン、ウリヤノフスク
180 (GMT+05:00) エカテリンバーグ
184 (GMT+05:00) イスラマバード、カラチ
185 (GMT+05:00) タシケント
190 (GMT+05:30) チェンナイ、カルカッタ、ムンバイ、ニューデリー
193 (GMT+05:45) カトマンズ
195 (GMT+06:00) アスタナ
196 (GMT+06:00) ダッカ
197 (GMT+06:00) オムスク
200 (GMT+05:30) スリジャヤワルダナプラコッテ
201 (GMT+07:00) ノボシビルスク
203 (GMT+06:30) ヤンゴン (ラングーン)
205 (GMT+07:00) バンコク、ハノイ、ジャカルタ
207 (GMT+07:00) クラスノヤルスク
208 (GMT+07:00) バルナウル、ゴルノ・アルタイスク
209 (GMT+07:00) ホブド
210 (GMT+08:00) 北京、重慶、香港特別行政区、ウルムチ
211 (GMT+07:00) トムスク
215 (GMT+08:00) クアラルンプール、シンガポール
220 (GMT+08:00) 台北
225 (GMT+08:00) パース
227 (GMT+08:00) イルクーツク
228 (GMT+08:00) ウランバートル
229 (GMT+09:00) 平壌 (ピョンヤン)
230 (GMT+09:00) ソウル
231 (GMT+08:45) ユークラ
235 (GMT+09:00) 大阪、札幌、東京
240 (GMT+09:00) ヤクーツク
241 (GMT+09:00) チタ
245 (GMT+09:30) ダーウィン
250 (GMT+09:30) アデレード
255 (GMT+10:00) キャンベラ、メルボルン、シドニー
260 (GMT+10:00) ブリズベン
265 (GMT+10:00) ホバート
270 (GMT+10:00) ウラジオストク
274 (GMT+10:30) ロードハウ島
275 (GMT+10:00) グアム、ポートモレスビー
276 (GMT+11:00) ブーゲンビル島
277 (GMT+11:00) ノーフォーク島
278 (GMT+11:00) サハリン
279 (GMT+11:00) チョクルダフ
280 (GMT+11:00) ソロモン諸島、ニューカレドニア
281 (GMT+11:00) マガダン
284 (GMT+12:00) 協定世界時 +12
285 (GMT+12:00) フィジー
290 (GMT+12:00) オークランド、ウェリントン
295 (GMT+12:00) アナディリ、ペトロパブロフスク・カムチャツキー
299 (GMT+12:45) チャタム諸島
300 (GMT+13:00) ヌクアロファ
301 (GMT-05:00) チェトゥマル
302 (UTC+02:00) ハルツーム
303 (GMT-03:00) プンタアレーナス
304 (GMT+04:00) ボルゴグラード
305 (GMT-07:00) ユーコン