Udostępnij za pośrednictwem


Edytowanie kalendarzy godzin pracy za pomocą interfejsów API

Organizacje często potrzebują programowego tworzenia, edytowania lub usuwania godzin pracy w kalendarzach zasobów. W kalendarzach są wyświetlane godziny pracy, dni wolne i przerwy, które określają dostępność zasobu podczas planowania pracy. Zasoby te muszą być planowane w określonych strefach czasowych, mogą przestrzegać lub nie dni wolnych od pracy i mogą mieć zmienną wydajność. Aby uzyskać informacje dotyczące definiowania godzin pracy w aplikacji Field Service, przejdź do Dodawania godzin pracy do zasobu, który można zarezerwować.

Oprócz korzystania z aplikacji Field Service można używać następujących interfejsów API do modyfikowania reguł kalendarza dla wybranych typów rekordów:

  • Interfejs API Zapisz kalendarz (msdyn_SaveCalendar) tworzy lub aktualizuje rekordy kalendarza na wybranej encji, w oparciu o dane przekazane jako żądanie.
  • Interfejs API Usuń kalendarz (msdyn_DeleteCalendar) usuwa wszystkie reguły kalendarza wewnętrznego z kalendarza dla wybranej encji, w oparciu o dane przekazane jako żądanie.
  • Interfejs API zapisywania/usuwania kalendarza V2 (msdyn_SaveCalendar/msdyn_DeleteCalendar, passowanie UseV2) umożliwia powtarzanie wielu godzin pracy przez zmianę logiki nakładających się reguł. Aby uzyskać więcej informacji, zobacz Co się dzieje w przypadku nakładania się reguł?.

Ten artykuł zawiera szczegółowe informacje na temat danych wejściowych (żądań) i wyjściowych (odpowiedzi) poszczególnych interfejsów API oraz ich użycia oraz przykłady.

Wymagania wstępne

  • Wersja platformy 9.2.21055 lub nowsza z wersją planowania zasobów 3.12.45.7.
  • Użycie jednego z następujących typów rekordów:
    • Zasób, który można zarezerwować (bookableresource)
    • Wymagania dotyczące zasobów (msdyn_resourcerequirement)
    • Szablon godzin pracy (msdyn_workhourtemplate)
    • Projekt (msdyn_project)

Typy zdarzeń Kalendarz

Podczas tworzenia kalendarza określa się, ile razy występuje typ godziny pracy — jeden, cały dzień, tydzień lub każdy dzień lub też można utworzyć niestandardowy cykl. Aby uzyskać więcej informacji o tych zdarzeniach z kalendarza, przejdź do przykładów w dalszej części tego artykułu.

Wystąpienie

Kiedy typ godziny pracy występuje tylko raz w kalendarzu encji, jest to określane jako wystąpienie.

Rozważmy na przykład zasób pracujący od 5:00 do 10:00 26 maja 2021 r. Te interfejsy API obsługują tylko ten typ wystąpienia, który rozpoczyna się i kończy w tym samym dniu. Rozważmy jeszcze zasób pracujący od 26 maja 2021 r. o 20:00 do od 10:00 27 maja 2021 r. Nie można utworzyć tego wystąpienia, korzystając z tylko jednego wywołania interfejsu API msdyn_SaveCalendar; trzeba wykonać dwie rozmowy.

Wystąpienie całodzienne

Kiedy typ godziny pracy ma miejsce przez jeden lub więcej dni, rozpoczynając od północy (00:00) jako daty rozpoczęcia, jest to wystąpienie całodzienne. Maksymalny czas trwania wystąpienia całodziennego wynosi pięć lat.

Na przykład zasób pracuje przez cały dzień od 26 maja 2021 r. do końca dnia 30 maja 2021 r. Jest to wystąpienie całodzienne, które trwa pięć dni.

Cykl tygodniowy

Kiedy typ godziny pracy występuje o tej samej porze w wybranych dniach tygodnia, jest nazywany cyklem tygodniowym.

Na przykład zasób pracuje w godzinach od 5:00 do 10:00 w każdy poniedziałek, wtorek i środę.

Cykl dzienny

Kiedy typ godziny pracy występuje o tej samej porze każdego dnia, jest nazywany cyklem dziennym.

Na przykład zasób pracuje w godzinach od 5:00 do 10:00 w każdy dzień tygodnia.

Wystąpienie niestandardowe

Kiedy typ godziny pracy występuje w określonych porach w określone dni, ale godziny różnią się w poszczególne dni, można utworzyć wystąpienie niestandardowe.

Na przykład zasób pracuje w godzinach od 5:00 do 10:00 w każdy poniedziałek i od 12:00 do 15:00 w każdą środę.

Typy godzin pracy

Te interfejsy API obsługują tworzenie, aktualizowanie i usuwanie operacji dla następujących typów godzin pracy:

Godziny pracy

Godziny pracy to godziny, w których encja jest dostępna do wykonania pracy.

Przy użyciu tych interfejsów API można wykonać następujące czynności:

  • Tworzenie, edytowanie i usuwanie wystąpienia godziny pracy.
  • Tworzenie, edytowanie i usuwanie cyklu dziennego godziny pracy.
  • Tworzenie, edytowanie i usuwanie cyklu tygodniowego godziny pracy.
  • Tworzenie, edytowanie i usuwanie cyklu niestandardowego godziny pracy.
  • Tworzenie, edytowanie i usuwanie godzin pracy całego dnia.
  • Tworzenie i edytowanie wydajności w godzinach pracy.
  • Edytuj pojedyncze wystąpienie godziny pracy w cyklu.
  • Edytuj Te i następujące wystąpienia w cyklu.
  • Zmienianie wystąpienia godziny pracy na cykl.
  • Zmienianie strefy czasowej reguły kalendarza.

Przy użyciu tego interfejsu API można wykonać następujące czynności:

  • Usuń pojedyncze wystąpienie godziny pracy z cyklu.
  • Utwórz wystąpienie obejmujące 24 godziny, ale nie rozpoczyna się i nie kończy się o północy (00:00).
  • Tworzenie, edytowanie i usuwanie cyklu całodziennego.

Godzina wolna od pracy

Jest to czas, w którym encja jest niedostępna do pracy z nieokreślonego powodu.

Przy użyciu tych interfejsów API można wykonać następujące czynności:

  • Tworzenie i edytowanie całodniowych godzin wolnych od pracy.
  • Tworzenie i edytowanie wystąpienia godziny wolnej od pracy.
  • Zmienianie strefy czasowej reguły kalendarza.

Przy użyciu tych interfejsów API nie można wykonać następujących czynności:

  • Tworzenie i wystąpienie wystąpienia godziny wolnej od pracy.

Przerwa

Są to godziny w dniu pracy, w których encja ma przerwę i jest niedostępna do pracy. Przerwy nie mogą istnieć bez godzin pracy; muszą wystąpić pomiędzy dwiema godzinami pracy w ciągu dnia. Przerwy nie mogą nakładać się na godziny pracy.

Przy użyciu tych interfejsów API można wykonać następujące czynności:

  • Tworzenie lub edytowanie przerw podczas godzin pracy.

Przy użyciu tych interfejsów API nie można wykonać następujących czynności:

  • Usuń tylko przerwy z wystąpienia lub cyklu godzin pracy.

Czas wolny

Jest to czas, w którym encja jest niedostępna do pracy z powodu urlopu. Można określić przyczynę czasu wolnego.

Przy użyciu tych interfejsów API można wykonać następujące czynności:

  • Tworzenie i edytowanie czasu wolnego za pomocą etykiety.
  • Zmienianie strefy czasowej reguły kalendarza.

Przy użyciu tych interfejsów API nie można wykonać następujących czynności:

  • Tworzenie lub edytowanie cyklu godziny wolnej od pracy.

Dni wolne od pracy

Można tworzyć encje zamknięcia dnia pracy definiujące czas zamknięcia. Za pomocą interfejsu API msdyn_SaveCalendar można ustawić, aby encja przestrzegała lub ignorowała czas wolny od pracy organizacji dzięki zastosowaniu opcjonalnego klucza ObserveClosure. Kiedy mają ustawiony czas obserwowania tych zamknięć, encje nie będą dostępne do pracy.

Zapisz interfejs API Kalendarz

Dane wejściowe

Żądanie zawiera tylko jeden atrybut—CalendarEventInfo, czyli Typ Ciąg. Zawiera on kilka innych atrybutów osadzonych w tym ciągu.

Uwaga

W poniższej tabeli Typ reprezentuje format, spodziewany, że żądanie będzie pomyślne. Jednak całe żądanie jest analizowane jako pojedynczy ciąg.

CalendarEventInfo

Nazwa/nazwisko Typ Wymagane Opis
EntityLogicalName String Tak Ten klucz opisuje encję, z której jest wywoływany interfejs API. Kalendarz tej encji należy utworzyć lub edytować.
CalendarId Identyfikator GUID Tak Ten klucz zawiera identyfikator kalendarza powiązany z encją opisaną powyżej. Po utworzeniu dowolnej z tych encji automatycznie jest tworzony rekord kalendarza. Te interfejsy API edytują ten rekord kalendarza, dodając reguły lub edytując istniejące reguły.
RulesAndRecurrences RulesAndRecurrences Tak Ten klucz jest tablicą, a każdy element zawiera wiele atrybutów wymienionych w tabeli w następnej sekcji. Rozmiar tablicy powinien być co najmniej jeden.
IsVaried Boolean Nie Ten klucz powinien być ustawiony na wartość true dla niestandardowych scenariuszy cyklu.
IsEdit Boolean Nie Ten klucz powinien być ustawiony na wartość true dla edycji istniejących encji.
TimeZoneCode Integer Nie Ten klucz przyjmuje wartość całkowitą odpowiadającą strefie czasowej reguł kalendarza. Informacje o mapowaniu można uzyskać w dalszej części tego artykułu w artykule na temat kodów stref czasowych. Domyślna wartość to strefa czasowa użytkownika.
InnerCalendarDescription String Nie Ten klucz jest potrzebny tylko wtedy, gdy reguła kalendarza dotyczy czasu wolnego. Powinna ona zawierać przyczynę czasu wolnego.
ObserveClosure Boolean Nie Ten klucz jest specyficzny dla cykli. Jeśli ustawiono jej wartość true, encja ma dni zamknięcia.
RecurrenceEndDate DateTime Nie Ten klucz jest specyficzny dla cykli. Zawiera datę zakończenia cyklu. Jeśli sygnatura czasowa to 08:00:00 lub wcześniej, data zakończenia cyklu jest o jeden dzień wcześniejsza niż określona data. Jeśli sygnatura czasowa to 08:00:01 lub później, data jest respektowana taka, jaka jest. Domyślna wartość wystąpień to null. Domyślna wartość dla cykli to 30 grudnia 9999, 23:59:59, UTC.
RecurrenceSplit Boolean Nie Ten klucz jest specyficzny dla cykli. Ta wartość jest ustawiona na true dla edycji "To i następne wystąpienia" cyklu.
ResourceId Identyfikator GUID Nie Ten klucz zawiera SystemUserId lub ResourceId i ma być przekazany tylko wtedy, gdy encja skojarzona z tym wywołaniem to zasób, który można zarezerwować typu SystemUser. To konieczne, aby sprawdzić, uprawnienia OwnCalendar na karcie Zarządzanie usługą.
UseV2 Flaga Nie Przekazanie tej części umożliwia włączenie wersji V2 kalendarza godzin pracy z udoskonaloną logiką nakładających się reguł pozwalającą na wielokrotne powtarzanie się reguł. Aby uzyskać więcej informacji, zobacz Co się dzieje w przypadku nakładania się reguł?.

RulesAndRecurrences

Nazwa/nazwisko Type Wymagania opis
Reguły Reguły Tak Ten klucz jest tablicą, a każdy element zawiera wiele atrybutów wymienionych w tabeli w następnej sekcji. Rozmiar tablicy powinien być co najmniej jeden.
RecurrencePattern String Nie Ten klucz jest specyficzny dla cykli. Obecnie obsługujemy tylko ten wzorzec: FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA. BYDAY można zmienić tak, aby zawierało mniej dni; jednak FREQ i INTERVAL nie można zmienić.
InnerCalendarId Identyfikator GUID Nie Ten klucz jest specyficzny dla edycji. Jeśli reguła jest edytowana, InnerCalendarId musi zostać przekazana tutaj. Jeśli InnerCalendarId nie zostanie przekazana, API utworzy nową regułę, nawet jeśli klucz IsEdit jest ustawiony na true.
Akcja Integer Nie Ten klucz jest specyficzny dla cykli niestandardowych. Jeśli cykl niestandardowy jest tworzony lub edytowany, należy wprowadzić jedną z następujących liczb:
  • (1) Dodawanie dnia do cyklu
  • (2) Usuwanie dnia z cyklu
  • (3) Edytowanie tylko dat rozpoczęcia lub zakończenia, bądź edytowanie wydajności
  • (4) Edytowanie wszystkiego poza kluczami wymienionymi w (3)

Reguły

Nazwa/nazwisko Pisz Wymagani Opis
StartTime DateTime Tak Ten klucz zawiera wpis datetime w formacie ISO. Na przykład \"2021-05-15T12:00:00.000Z\". Część Godzina określa godzinę rozpoczęcia godziny pracy w strefie czasowej podanej wcześniej. Część Data określa datę rozpoczęcia godziny pracy. Tutaj, 15 maja 2021 r. jest datą wystąpienia lub datą rozpoczęcia cyklu. Jeśli wzór to BYDAY=TU,WE, ale 15 maja (Sobota) to data, API automatycznie utworzy lub edytuje reguły na wszystkie wtorki i środy po 15 maja. W takim przypadku reguła nie musi mieć daty odpowiadającej dniowi.
EndTime DateTime Tak Zawiera wpis datetime w formacie ISO. Na przykład \"2021-05-15T12:00:00.000Z\". Część Godzina określa godzinę zakończenia godziny pracy w strefie czasowej podanej wcześniej. Część daty musi zawierać tę samą datę, co część data StartTime. Jedyne wyjątki:
  • Jeśli jest to zdarzenie całodzienne. W takim przypadku część Data powinna odzwierciedlać datę zakończenia wystąpienia całodziennego.
  • Wystąpienie zakończy się z końcem dnia, czyli o 00:00 następnego dnia. W tym przypadku data powinna wyglądać następująco \"2021-05-16T00:00:00.000Z\". Aby określić datę zakończenia cyklu, zmodyfikuj atrybut RecurrenceEndDate.
WorkHourType Integer Tak Ten klucz zawiera liczbę odpowiadającą jednej z następujących opcji:
  • (0) Praca
  • (1) Przerwa
  • (2) Wolne od pracy
  • (3) Czas wolny
Nakład pracy Integer Nie Ten klucz określa wydajność encji. Musi to być liczba całkowita. Domyślna wartość wynosi 1.

Dane wyjściowe

Ten interfejs API POST tworzy lub modyfikuje rekordy reguł kalendarza dla wybranej encji. Podaje także następujące dane wyjściowe.

Nazwa/nazwisko Typ Opis
InnerCalendarIds String Tablica identyfikatorów GUID InnerCalendarIds, które są wynikiem operacji POST.

API Usuń kalendarz

Dane wejściowe

Nazwa/nazwisko Typ Wymagane Opis
EntityLogicalName String Tak W tym polu opisano encję, której reguły kalendarza mają zostać usunięte.
InnerCalendarId Identyfikator GUID Tak To pole opisuje identyfikator InnerCalendarId, który należy usunąć. Jeśli z jedną regułą jest skojarzonych wiele identyfikatorów InnerCalendarId, każdy identyfikator jest tu wystarczający. Więcej informacji o kalendarzach wewnętrznych i zewnętrznych: Encje kalendarza
CalendarId Identyfikator GUID Tak To pole opisuje CalendarId encji.
IsVaried Boolean Nie To pole jest specyficzne dla cyklu i można je ustawić w na yes, jeśli niestandardowa reguła cyklu jest usuwana.
UseV2 Flaga Nie Przekazanie tej części umożliwia włączenie wersji V2 kalendarza godzin pracy z udoskonaloną logiką nakładających się reguł pozwalającą na wielokrotne powtarzanie się reguł. Aby uzyskać więcej informacji, zobacz Co się dzieje w przypadku nakładania się reguł?.

Dane wyjściowe

Ten interfejs API POST usuwa rekordy reguł kalendarza dla wybranej encji. Ponadto podaje następujące dane wyjściowe.

Nazwa/nazwisko Pisz Opis
InnerCalendarIds String Tablica identyfikatorów GUID InnerCalendarIds, które są wynikiem operacji POST.

Interfejs API ładowania kalendarza

Dane wejściowe

Nazwa: msdyn_LoadCalendars
Typ: akcja
Opis: Zwraca kalendarze dla podanego wejścia LoadCalendarsInput.

Nazwa: msdyn_LoadCalendars.LoadCalendarsInput
Typ: parametr
Opis: ciąg znaków w następującym formacie JSON:

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

Nazwa: msdyn_LoadCalendarsResponse
Typ: typ złożony
Opis: zawiera odpowiedź z akcji msdyn_loadCalendars.

Nazwa: msdyn_LoadCalendarsResponse.CalendarEvents
Typ: właściwość
Opis: ciąg znaków w następującym formacie JSON:

{
"calendarId": CalendarEventSlot[]
}

Gdzie calendarId jest właściwym identyfikatorem GUID reprezentującym GUID Kalendarza, a CalendarEventSlot jest obiektem o następującym formacie:

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

Jak wywołać interfejsy API

Te interfejsy API można wywoływać przy użyciu przeglądarki.

  1. Otwórz przeglądarkę i organizację, w której musisz wprowadzić zmiany w kalendarzu.
  2. Otwórz narzędzia deweloperów (wybierz Ctrl+Shift+I w Microsoft Edge, wybierz F12 w Google Chrome).
  3. W konsoli wprowadź następującą funkcję, po zastąpieniu [nazwa organizacji] szczegółami organizacji (na przykład 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. Po zdefiniowaniu tej funkcji można wywołać ją w celu tworzenia, edytowania lub usuwania kalendarzy przy użyciu interfejsów API. Wprowadź następujące połączenie, aby zapisać kalendarz:
       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
                   }]
               }]
           }"
       })

Wprowadź następujące połączenie, aby usunąć kalendarz:

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

W poniższej sekcji podano przykłady różnych wywołań w zależności od potrzeb. Zastąp action wywołania funkcji w kroku 3 msdyn_SaveCalendar lub msdyn_DeleteCalendar, i zastąp data odpowiednim CalendarEventInfo.

Zobacz także poniższy zrzut ekranu dla wywołania Power Automate dla akcji msdyn_SaveCalendar: Wywołanie Power Automate dla akcji msdyn_SaveCalendar.

Przykładowe scenariusze użycia interfejsu API

Przejdźmy teraz przez niektóre scenariusze, dla których można użyć tych interfejsów API.

Bob i Tim to kierowcy samochodów ciężarowych dla Contoso Enterprises w Bellevue w stanie Waszyngton. Ich dyspozytor, Debbie, jest odpowiedzialna za wprowadzenie zmian w ich kalendarzach godzin pracy. Debbie wprowadza te zmiany przy użyciu interfejsów API msdyn_SaveCalendar i msdyn_DeleteCalendar.

Utwórz wystąpienie godziny pracy.

Bob ma zaplanowane dostarczanie przesyłek od 9:00 do 17:00 w dniu 15 maja 2021 r. Debbie używa interfejsu API msdyn_SaveCalendar.

Żądanie

{
 "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}]}]}"
}

Response

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

Edytuj wystąpienie godziny pracy.

Następnie harmonogram Boba zmienia się, i ma on zaczynać o 10:00 w dniu 15 maja 2021 r. Debbie używa interfejsu API msdyn_SaveCalendar.

Żądanie

{
 "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\"}]}"
}

Response

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

Usuń wystąpienie godziny pracy.

Pojawia się wyjątkowa sytuacja rodzinna i Robert musi anulować cały dzień pracy. Debbie używa interfejsu API msdyn_DeleteCalendar.

Zażądaj

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

Odpowiedź

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

Utwórz cykl całodzienny godziny pracy

Począwszy od 20 maja 2021 r. Robert zdecydował się na pracę z Contoso przez cały tydzień od 8:00 do 17:00, a następnie zakończy tam pracę 15 lipca 2021 r.

Zażądaj

{
 "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\"}]}"
}

Odpowiedź

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

Edytuj cyklu całodzienny godzin pracy ze zwiększoną wydajnością

Bob zdecydował, że przestanie pracować przez cały tydzień od 15 czerwca 2021 r., by zrobić przerwę. Do tego czasu będzie on nadal planować przez cały tydzień, zgodnie z wcześniejszymi ustaleniami. Debbie wprowadza te zmiany przy użyciu interfejsu API msdyn_SaveCalendar.

Żądanie

{
 "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\"}]}"
}

Response

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

Utwórz cykl tygodniowy godziny pracy

Robert będzie pracować od 16 czerwca 2021 r. od 8:00 do 17:00 w środy i piątki, a w godzinach od 12:00 do 12:30 w przypadku lunchu. Debbie używa interfejsu API msdyn_SaveCalendar, ale pomyliła się i zaplanowała przerwę od 12:00 do 13:00.

Zażądaj

{
  "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\"}]}"
}

Odpowiedź

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

Edytuj przerwę z cyklu tygodniowego godziny pracy

Debbie poprawia błąd i zmienia przerwę, która ma trwać od 12:00 do 12:30, używając interfejsu API msdyn_SaveCalendar.

Żądanie

{
  "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\"}]}"
}

Response

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

Utwórz cykl niestandardowy godziny pracy

Tim pracuje dla firmy Contoso w poniedziałki od 8:00 do 17:00, a w środy od 11:00 do 15:00. 16 maja 2021 r. Tim rozpoczął pracę w firmie Contoso. Debbie używa interfejsu API msdyn_SaveCalendar, aby utworzyć godziny pracy Tima.

Żądanie

{
"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\"}]}"
}

Response

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

Edytuj cykl niestandardowy godziny pracy

Następnie harmonogram Tima zmienia się: jego godziny pracy to środy od 17:00 do 20:00 i czwartki od 10:00 do 12:00. Poniedziałek jest usuwany z harmonogramu Tima. Debbie używa interfejsu API msdyn_SaveCalendar, aby to osiągnąć.

Zażądaj

{
"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\"}]}"
}

Odpowiedź

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

Edytuj wystąpienie godziny pracy w cyklu

26 maja 2021 r. Tim może pracować tylko od 13:00 do 19:00. Debbie używa tutaj interfejsu API msdyn_SaveCalendar.

Zażądaj

{
 "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\"}]}"
}

Odpowiedź

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

Usuń cykl niestandardowy godziny pracy

Tim postanowił zwolnić się z pracy i musi usunąć cały swój harmonogram. Debbie używa tutaj interfejsu API msdyn_DeleteCalendar.

Zażądaj

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

Odpowiedź

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

Tworzenie czasu wolnego

Tim weźmie 3 dni wolnego na urlop rodzinny od 9 czerwca 2021 r.

Żądanie

{
 "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}]}]}"
}

Response

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

Tworzenie godzin pracy przez cały dzień

Tim ma 72-godzinną zmianę od 20 maja 2021 r. Debbie używa interfejsu API msdyn_SaveCalendar, aby utworzyć godziny pracy Tima.

Zażądaj

{
 "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}]}]}"
}

Odpowiedź

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

— często zadawane pytania

Jest wyświetlany komunikat o błędzie „StartTime nie może być większy ani równy EndTime”.

Upewnij się, że nie nakładają się na siebie przedziały czasu różnych reguł kalendarza. Sprawdź daty, aby się upewnić, że StartTime nie jest późniejsza niż EndTime. Należy również sprawdzić, czy godziny są zgodne z 24-godzinnym formatem godzin.

Czy można używać interfejsów API do aktualizowania encji "Szablony godzin pracy"?

Tak, ten interfejs API umożliwia tworzenie i aktualizowanie szablonów godzin pracy oprócz godzin pracy zasobów.

Otrzymuję komunikat o błędzie "Wystąpił błąd podczas raportowania obiektu typu Microsoft.Dynamics.UCICalendar.Plugins.SaveCalendarContract+CalendarEventInfo. Źródło wejściowe nie jest poprawnie sformatowane.
or
Oczekiwany stan „Element” .. Napotkano „Tekst” o nazwie „”, przestrzeń nazw „”.

Upewnij się, że ciąg jest poprawnie analizowany. Może na przykład brakować nawiasów, przecinków lub średników.

Otrzymuję błąd „Nieprawidłowy wzorzec powtarzania. Zapoznaj się z dokumentacją, aby zapoznać się z obsługiwanymi wzorcami”.

Obecnie obsługujemy tylko ten wzorzec: FREQ=DAILY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA. BYDAY można zmienić tak, aby zawierało mniej dni; jednak FREQ i INTERVAL nie można zmienić. Upewnij się, że we wzorcach nie ma spacji.

Jak uzyskać informacje o danych CalendarId i InnerCalendarId zasobu?

CalendarId można uzyskać z atrybutów zasobu. Zadzwoń, aby uzyskać te informacje: [org-url]/api/data/v9.1/bookableresources([bookableresourceGUID]).

Przykładem poprzedniej rozmowy jest [org-url]/api/data/v9.1/bookableresources(7bb0224b-6712-ec11-94f9-000d3a6d888e).

InnerCalendarId można uzyskać z atrybutów kalendarza. Zadzwoń, aby uzyskać te informacje: [org-url]/api/data/v9.1/calendars([calendar-id-from-above-call])?$expand=calendar_calendar_rules.

Przykładem poprzedniej rozmowy jest [org-url]/api/data/v9.1/calendars(02481736-1b6a-4d49-9ebd-a5bd041c1c99)?$expand=calendar_calendar_rules.

Co się dzieje w przypadku nakładających się reguł?

Istnieje kilka różnych klasyfikacji, pod które podlegają reguły:

  • Klasyfikacja 1 — wystąpienie codzienne (pracuje/nie pracuje) oraz wystąpienie czasu wolnego.
  • Klasyfikacja 0 — cykl tygodniowy (pracuje/nie pracuje).

Nakładające się reguły V2

  • Reguły Klasyfikacji 1 mają priorytet większy niż reguły Klasyfikacji 0. jeśli w tym samym dniu istnieją dwie reguły (po jednej z każdej klasyfikacji), wystąpień dziennych lub czasu wolnego mają priorytet nad cyklem tygodniowym.
  • Jeśli w tym samym okresie istnieje wiele reguł klasyfikacji 0:
    • Jeśli godziny nie będą się na siebie nakładać, obie pozostaną w kalendarzu.
    • Jeśli godziny się nakładają, regułą, która została ostatnio utworzona/zmodyfikowana, jest reguła uwzględniana w kalendarzu zasobu. Wszystkie inne reguły nakładające się w dacie są usuwane. Jeśli dla niektórych reguł o klasyfikacji 0 pewne daty są dostępne, ale nie dla innych, reguła jest zestawiona tak, aby zachowywała sekcje, które się nie nakładają, podczas gdy sekcje, które się nakładają są usuwane.

Przykłady zachowania kalendarza w wersji V2:

Przykład 1 — powtarzanie godzin pracy: nakładające się daty bez nakładających się dni/godzin

W przypadku danego czasu pracownik serwisu pracuje rano, popołudniem lub nocą na zmiany w różnych dniach.

  1. Utwórz pierwszą powtarzaną regułę kalendarza dla danego zakresu dat. Na przykład: Powtórzenie: pon., wt., 1.1-4.1; 8:00–17:00 ET.

  2. Utwórz drugą powtarzaną regułę kalendarza dla częściowego zakresu dat, jednocześnie zapewniając, że godziny pracy nie będą częściowe z poprzednimi dniami lub godzinami. Na przykład: Powtórz śr., czw; 1.1-4.1; 8:00–17:00 ET lub Powtórzenie: pon., wt.; 1.1-4.1, 17:00–20:00 ET.

Wynik: obie reguły kalendarza pozostają obok siebie i istnieją obok siebie.

Przykład 2 — powtarzanie godzin pracy: niektóre nakładające się daty, z nakładającymi się dniami i drugą regułą rozpoczyna się/kończy przed pierwszą regułą lub po jej zakończeniu

Pracownik serwisu otrzymuje nowy harmonogram pracy, który zastępuje niektóre tygodnie starego harmonogramu. Na podstawie kontraktu zawsze te same dni co tydzień.

  1. Utwórz pierwszą powtarzaną regułę kalendarza dla danego zakresu dat. Na przykład: Powtórzenie: pon., wt.; 2.1-4.1, 8:00–17:00 ET.

  2. Utwórz drugą powtarzaną regułę kalendarza dla nakładających się zakresów dat, w którym wszystkie dni będą nakładały się na siebie godziny pracy. Wybierz daty rozpoczęcia/zakończenia dla tej nowej reguły, które są przed datą rozpoczęcia/zakończenia dla reguły pierwszej lub po nim. Na przykład: Powtórzenie: pon., wt.; 3.1-5.1, 13:00–20:00 ET.

Wynik: pierwsza reguła zostanie obcięta w celu uwzględnienia daty rozpoczęcia/zakończenia drugiej reguły. Na przykład: Powtórz pon., wt.; 2.1-2.28; 8:00–17:00 ET ORAZ Powtórzenie: pon., wt.; 3.1-5.1, 13:00–20:00 ET.

Przykład 3 — powtarzanie godzin pracy: wszystkie nakładające się daty bez niektórych nakładających się dni/godzin

Pracownik serwisu jest pracownikiem kontraktowym na określony 2-miesięczny okres. Zgodził się na dodatkową pracę w niektóre dni. Chce je przenieść wtorkowe godziny pracy na wcześniej/później.

  1. Utwórz jakieś powtarzane reguły kalendarza dla danego zakresu dat. Na przykład: Powtórz pon., wt.; 2.1-4.1; 8:00–12:00 ET ORAZ Powtórzenie: wt., śr.; 2.1-4.1, 13:00–17:00 ET.

  2. Utwórz nową powtarzaną regułę kalendarza dla tego samego zakresu dat. Wybierz dni/godziny, które częściowo nakładają się na oryginalne reguły. Na przykład: Powtórz wt., czw.; 2.1-4.1; 10:00–14:00 ET.

Rezultat: nowa reguła zastąpi starą regułę, gdzie się nakładają, a pozostałe pozostaną niezmienione. Na przykład: Powtórz pon., wt.; 2.1-4.1; 8:00–12:00 ET ORAZ Powtórzenie: śr.; 2.1-4.1, 13:00–17:00 ET ORAZ Powtórzenie: wt., czw.; 2.1-4.1, 10:00–14:00 ET.

Przykład 4 — powtarzanie godzin pracy: nowe daty reguł zawarte w starej regule, niektóre nakładające się dni/godziny

Pracownik serwisu co tydzień pracuje w godzinach 8:00-17:00, pon-pt. Tylko przez dwa tygodnie będzie obsługiwany specjalny projekt awaryjny przy użyciu różnych godzin pracy 6:00-18:00.

  1. Utwórz pierwszą powtarzaną regułę kalendarza dla danego zakresu dat. Na przykład: powtórz Powtórz: pon, wt., śr., czw., pt.; 1.1-brak daty zakończenia; 8:00–17:00 ET.

  2. Utwórz drugą powtarzaną regułę kalendarza zawartą w powyższym zakresie dat, wybierz godziny pracy, które nakładają się na niektóre dni. Na przykład: Powtórzenie: pon., wt., śr.; 5.1-5.14, 6:00–18:00 ET.

Wynik: na końcu tego ćwiczenia kalendarz powinien mieć cztery powtarzane reguły:

  • obcięcie pierwszej reguły do daty rozpoczęcia drugiej reguły
  • druga reguła kalendarza
  • utworzyć nową regułę podobną do pierwszej reguły, ale daty drugiej reguły dla nienakładających się dni
  • obcięcie pierwszej reguły zostanie w celu uwzględnienia daty rozpoczęcia drugiej reguły bez daty zakończenia

Na przykład: Powtórzenie: pon., wt., śr., czw., pt.; 1.1-4.30, 08:00–17:00 ET ORAZ Powtórzenie: pon., wt., śr.; 5.1-5.14, 06:00–18:00 ET ORAZ Powtórzenie: czw., pt.; 5.1-5.14, 08:00–17:00 ET ORAZ Powtórzenie: pon., wt., śr., czw., pt.; 5.15-brak daty zakończenia, 08:00–17:00 ET

Przykład 5 — niepowtarzające się godziny pracy (wystąpienie, reguła klasyfikacji 1)

Pracownik serwisu ma szereg dni współpracy zespołu, które mają priorytet pracy ponad wszystkimi innymi wystąpieniami dla dnia.

  1. Utwórz powtarzaną regułę kalendarza dla danego zakresu dat. Na przykład: powtórz Powtórz: pon, wt., śr., czw., pt.; 1.1-brak daty zakończenia; 8:00–17:00 ET.

  2. Utwórz regułę kalendarza, która nie jest powtarzana, która znajduje się w zakresie powyżej daty. Wybierz godziny pracy, które nakładają się na niektóre dni. Na przykład: Niepowtarzalne; 6.21; 07:00–13:00 ET.

Wynik: na końcu tego ćwiczenia kalendarz powinien 1 niepowtarzaną regułę (wystąpienie). Reguła, która się nie powtarza, zastępuje nakładające się zdarzenie powtarzane przez cały dzień. Na przykład: Powtórz: pon, wt., śr., czw., pt.; 1.1-brak daty zakończenia poza 6.21; niepowtarzalne; 07:00–13:00 ET.

Nakładające się reguły V1

  • Reguły Klasyfikacji 1 mają priorytet większy niż reguły Klasyfikacji 0. Więc jeśli w tym samym dniu istniały dwie reguły (po jednej z każdej klasyfikacji), wystąpień dziennych lub czasu wolnego mają priorytet nad cyklem tygodniowym.
  • Jeśli istnieją dwie reguły o tej samej klasyfikacji, reguła, która została ostatnio utworzona/zmodyfikowana, będzie regułą uwzględnianą w kalendarzu zasobu.
  • Należy pamiętać, że wystąpienia całego dnia to Klasyfikacja 1, dlatego warto rozważyć zmianę ich na cykl tygodniowy, aby móc dodać godziny pracy wystąpienia i sprawić, by były przestrzegane.
  • W przypadku istnienia godziny pracy i tworzenia wystąpienia czasu wolnego nakładającego się na nią, reguły są rozdzielane w sposób zapewniający respektowanie czasu wolnego i zachowania pozostałych godziny pracy bez zmian. Na przykład jeśli istnieją godziny pracy od 8:00 do 17:00 21 września, a zdarzenie czasu wolnego jest dodawane od 15:00 do 19:00 21 września, otrzymamy godziny pracy od 8:00 do 15:00 i czas wolny od 15:00 do 19:00. Jeśli jednak reguły zostały utworzone w odwrotnej kolejności (najpierw utworzono czas wolny, a następnie utworzono godziny pracy), niezależnie od okresów czasu, zostanie ponownie wybrana tylko godzina pracy. Czas wolny zostanie zastąpiony.

Kody strefy czasowej

Wyliczenie Strefa czasowa
0 (GMT-12:00) Międzynarodowa linia zmiany daty — zachód
1 (GMT+13:00) Samoa
2 (GMT-10:00) Hawaje
3 (GMT-09:00) Alaska
4 (GMT-08:00) Stany Zjednoczone i Kanada (czas pacyficzny)
5 (GMT-08:00) Kalifornia Dolna
6 (GMT-11:00) Uniwersalny czas koordynowany - 11
7 (GMT-10:00) Wyspy Aleuckie
8 (GMT-09:30) Markizy
9 (GMT-09:00) Uniwersalny czas koordynowany - 09
10 (GMT-07:00) Stany Zjednoczone i Kanada (czas górski)
11 (GMT-08:00) Uniwersalny czas koordynowany - 08
12 (GMT-07:00) Chihuahua, La Paz, Mazatlan
15 (GMT-07:00) Arizona
20 (GMT-06:00) Stany Zjednoczone i Kanada (czas środkowy)
25 (GMT-06:00) Saskatchewan
29 (GMT-06:00) Guadalajara, Mexico City, Monterrey
33 (GMT-06:00) Ameryka Środkowa
34 (GMT-06:00) Wyspa Wielkanocna
35 (GMT-05:00) Stany Zjednoczone i Kanada (czas wschodni)
40 (GMT-05:00) Indiana (Wschód)
43 (GMT-05:00) Haiti
44 (GMT-05:00) Hawana
45 (GMT-05:00) Bogota, Lima, Quito, Rio Branco
47 (GMT-04:00) Caracas
50 (GMT-04:00) Kanada (czas atlantycki)
51 (GMT-05:00) Turks i Caicos
55 (GMT-04:00) Georgetown, La Paz, San Juan
56 (GMT-04:00) Santiago
58 (GMT-04:00) Cuiaba
59 (GMT-04:00) Asuncion
60 (GMT-03:30) Nowa Fundlandia
65 (GMT-03:00) Brasilia
69 (GMT-03:00) Buenos Aires
70 (GMT-03:00) Kajenna, Fortaleza
71 (GMT-03:00) Salwador
72 (GMT-03:00) Saint-Pierre i Miquelon
73 (GMT-03:00) Grenlandia
74 (GMT-03:00) Montevideo
75 (GMT-02:00) Środkowy Atlantyk
76 (GMT-02:00) Uniwersalny czas koordynowany - 02
77 (GMT-03:00) Araguaina
80 (GMT-01:00) Azory
83 (GMT-01:00) Wyspy Cabo Verde
84 (GMT+01:00) Casablanca
85 (GMT+00:00) Dublin, Edynburg, Lizbona, Londyn
90 (GMT+00:00) Monrovia, Reykjavik
92 (GMT) Uniwersalny czas koordynowany
95 (GMT+01:00) Belgrad, Bratysława, Budapeszt, Lublana, Praga
100 (GMT+01:00) Sarajewo, Skopje, Warszawa, Zagrzeb
105 (GMT+01:00) Bruksela, Kopenhaga, Madryt, Paryż
110 (GMT+01:00) Amsterdam, Berlin, Berno, Rzym, Sztokholm, Wiedeń
113 (GMT+01:00) Afryka Środkowozachodnia
210 (GMT+02:00) Kiszyniów
120 (GMT+02:00) Kair
125 (GMT+02:00) Helsinki, Kijów, Ryga, Sofia, Tallin, Wilno
129 (GMT+02:00) Amman
130 (GMT+02:00) Ateny, Bukareszt
131 (GMT+02:00) Bejrut
133 (GMT+02:00) Damaszek
134 (GMT+03:00) Stambuł
135 (GMT+02:00) Jerozolima
140 (GMT+02:00) Harare, Pretoria
141 (GMT+02:00) Windhuk
142 (GMT+02:00) Gaza, Hebron
145 (GMT+03:00) Moskwa, Sankt Petersburg
150 (GMT+03:00) Kuwejt, Rijad
151 (GMT+03:00) Mińsk
155 (GMT+03:00) Nairobi
158 (GMT+03:00) Bagdad
159 (GMT+02:00) Kaliningrad
160 (GMT+03:30) Teheran
165 (GMT+04:00) Abu Zabi, Maskat
169 (GMT+04:00) Baku
170 (GMT+04:00) Erewań
172 (GMT+04:00) Port Louis
173 (GMT+04:00) Tbilisi
174 (GMT+04:00) Iżewsk, Samara
175 (GMT+04:30) Kabul
176 (GMT+04:00) Astrachań, Uljanowsk
180 (GMT+05:00) Jekaterynburg
184 (GMT+05:00) Islamabad, Karaczi
185 (GMT+05:00) Taszkient
190 (GMT+05:30) Chennai, Kalkuta, Mumbaj, New Delhi
193 (GMT+05:45) Katmandu
195 (GMT+06:00) Astana
196 (GMT+06:00) Dhaka
197 (GMT+06:00) Omsk
200 (GMT+05:30) Sri Jayawardenepura
201 (GMT+07:00) Nowosybirsk
203 (GMT+06:30) Yangon (Rangun)
205 (GMT+07:00) Bangkok, Hanoi, Dżakarta
207 (GMT+07:00) Krasnojarsk
208 (GMT+07:00) Barnauł, Gornoałtajsk
209 (GMT+07:00) Ajmak kobdoski
210 (GMT+08:00) Pekin, Chongqing, SRA Hongkong, Urumczi
211 (GMT+07:00) Tomsk
215 (GMT+08:00) Kuala Lumpur, Singapur
220 (GMT+08:00) Tajpej
225 (GMT+08:00) Perth
227 (GMT+08:00) Irkuck
228 (GMT+08:00) Ułan Bator
229 (GMT+09:00) Phenian
230 (GMT+09:00) Seul
231 (GMT+08:45) Eucla
235 (GMT+09:00) Osaka, Sapporo, Tokio
240 (GMT+09:00) Jakuck
241 (GMT+09:00) Czyta
245 (GMT+09:30) Darwin
250 (GMT+09:30) Adelajda
255 (GMT+10:00) Canberra, Melbourne, Sydney
260 (GMT+10:00) Brisbane
265 (GMT+10:00) Hobart
270 (GMT+10:00) Władywostok
274 (GMT+10:30) Wyspa Lord Howe
275 (GMT+10:00) Guam, Port Moresby
276 (GMT+11:00) Wyspa Bougainville
277 (GMT+11:00) Wyspa Norfolk
278 (GMT+11:00) Sachalin
279 (GMT+11:00) Czokurdach
280 (GMT+11:00) Wyspy Salomona, Nowa Kaledonia
281 (GMT+11:00) Magadan
284 (GMT+12:00) Uniwersalny czas skoordynowany + 12
285 (GMT+12:00) Fidżi
290 (GMT+12:00) Auckland, Wellington
295 (GMT+12:00) Anadyr, Pietropawłowsk Kamczacki
299 (GMT+12:45) Wyspy Chatham
300 (GMT+13:00) Nuku'alofa
301 (GMT-05:00) Chetumal
302 (UTC+02:00) Chartum
303 (GMT-03:00) Punta Arenas
304 (GMT+04:00) Wołgograd
305 (GMT-07:00) Jukon