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:
|
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:
|
WorkHourType | Integer | Tak | Ten klucz zawiera liczbę odpowiadającą jednej z następujących opcji:
|
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.
- Otwórz przeglądarkę i organizację, w której musisz wprowadzić zmiany w kalendarzu.
- Otwórz narzędzia deweloperów (wybierz Ctrl+Shift+I w Microsoft Edge, wybierz F12 w Google Chrome).
- 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));
}
- 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
:
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.
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.
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ń.
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.
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.
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.
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.
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.
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.
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.
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 |