Modifica i calendari delle ore di lavoro utilizzando le API

Le organizzazioni spesso devono creare, modificare o eliminare a livello di programmazione le ore di lavoro nei calendari delle proprie risorse. I calendari mostrano le ore lavorative, il tempo libero e le pause che determinano la disponibilità di una risorsa quando viene pianificato il lavoro. Tali risorse devono essere pianificate in fusi orari specifici, possono osservare o meno chiusure aziendali e possono avere una capacità variabile. Per informazioni sulla definizione dell'orario di lavoro nell'app Field Service, vai a Aggiungi ore lavorative a una risorsa prenotabile.

Oltre a utilizzare l'app Field Service, puoi utilizzare le seguenti API per modificare le regole del calendario per i tipi di record selezionati:

  • L'API Salva calendario (msdyn_SaveCalendar) crea o aggiorna i record del calendario su un'entità selezionata, in base agli input passati come richiesta.
  • L'API Elimina calendario (msdyn_DeleteCalendar) cancella tutto regole del calendario interno di un calendario su un'entità selezionata, in base agli input passati come richiesta.
  • L'API di salvataggio/eliminazione del calendario V2 (msdyn_SaveCalendar/msdyn_DeleteCalendar, pass flag UseV2) consente più ricorrenze dell'orario di lavoro contemporaneamente alterando la logica per le regole sovrapposte. Per ulteriori informazioni, vedi Cosa succede se ci sono regole che si sovrappongono?.

Questo articolo contiene dettagli sull'input (richiesta) e l'output (risposta) di ciascuna API e sul loro utilizzo, con esempi.

Prerequisiti

  • Versione Platform 9.2.21055 o successiva con Pianificazione risorse universale versione 3.12.45.7.
  • Utilizzo di uno dei seguenti tipi di record:
    • Risorsa prenotabile (bookableresource)
    • Requisiti della risorsa (msdyn_resourcerequirement)
    • Modello orario di lavoro (msdyn_workhourtemplate)
    • Project (msdyn_project)

Tipi di eventi del calendario

Quando crei un calendario, definisci quante volte si verificherà un tipo di orario di lavoro una volta, tutto il giorno, ogni settimana o ogni giorno oppure puoi creare una ricorrenza personalizzata. Per ulteriori informazioni su questi eventi del calendario, vai a esempi più avanti in questo articolo.

Occorrenza

Quando un tipo di orario di lavoro si verifica solo una volta nel calendario dell'entità, viene chiamato occorrenza.

Si consideri, ad esempio, una risorsa che lavora dalle 5:00 alle 10:00 del 26 maggio 2021. Queste API supportano solo questo tipo di occorrenza, che inizia e termina nello stesso giorno. Per un altro esempio, si consideri una risorsa che lavora dalle 20:00 del 26 maggio 2021 alle 10:00 del 27 maggio 2021. Non è possibile creare questa occorrenza usando solo una chiamata dell'API msdyn_SaveCalendar; è necessario effettuare due chiamate.

Occorrenza Giornata intera

Quando un tipo di orario di lavoro si verifica per uno o più giorni interi, a partire dalla mezzanotte (12:00) della data di inizio, è un'occorrenza Giornata intera. La durata massima per un'occorrenza Giornata intera è di cinque anni.

Ad esempio, una risorsa lavora tutto il giorno dal 26 maggio 2021 al termine del giorno del 30 maggio 2021. Questo è un evento Giornata intera e dura cinque giorni.

Ricorrenza settimanale

Quando un tipo di orario di lavoro si verifica alla stessa ora in giorni specifici di ciascuna settimana, viene chiamato ricorrenza settimanale.

Ad esempio, una risorsa lavora dalle 5:00 alle 10:00 ogni lunedì, martedì e mercoledì.

Ricorrenza giornaliera

Quando un tipo di orario di lavoro si verifica alla stessa ora ogni giorno, viene chiamato ricorrenza giornaliera.

Ad esempio, una risorsa lavora dalle 5:00 alle 10:00 ogni giorno della settimana.

Ricorrenza personalizzata

Quando un tipo di orario di lavoro si verifica in ore specifiche in giorni specifici della settimana, ma gli orari sono diversi in giorni diversi, è possibile creare una ricorrenza personalizzata.

Ad esempio, una risorsa lavora dalle 5:00 alle 10:00 ogni lunedì e dalle 12:00 alle 15:00 ogni mercoledì.

Tipi di orari di lavoro

Queste API supportano le operazioni di creazione, aggiornamento ed eliminazione per i seguenti tipi di orari lavorativi:

Orario di lavoro

L'orario di lavoro è il tempo durante il quale un'entità è disponibile a svolgere il lavoro.

Utilizzando queste API, puoi eseguire le seguenti operazioni:

  • Creare, modificare o eliminare un'occorrenza di un'ora lavorativa.
  • Creare, modificare o eliminare un'occorrenza di una ricorrenza giornaliera.
  • Creare, modificare o eliminare un'occorrenza di una ricorrenza settimanale.
  • Creare, modificare o eliminare un'occorrenza di una ricorrenza personalizzata.
  • Creare, modificare o eliminare orari di lavoro Giornata intera.
  • Creare o modificare la capacità di orari di lavoro.
  • Modificare una singola occorrenza di un orario lavorativo in una ricorrenza.
  • Modificare Questa occorrenza e le seguenti in una ricorrenza.
  • Modificare un'occorrenza di un'ora lavorativa in una ricorrenza.
  • Modificare il fuso orario locale della regola del calendario.

Utilizzando questa API, non puoi eseguire le seguenti operazioni:

  • Eliminare una singola occorrenza di un orario lavorativo da una ricorrenza.
  • Creare un'occorrenza che duri 24 ore ma non inizi e finisca a mezzanotte (12:00).
  • Creare, modificare o eliminare una ricorrenza Giornata intera.

Orario non lavorativo

Si tratta di periodi durante i quali l'entità non è disponibile a lavorare per un motivo non specificato.

Utilizzando queste API, puoi eseguire le seguenti operazioni:

  • Creare o modificare l'orario non lavorativo per l'intera giornata.
  • Creare o modificare un'occorrenza di un'orario non lavorativo.
  • Modificare il fuso orario locale della regola del calendario.

Utilizzando queste API, non puoi eseguire le seguenti operazioni:

  • Creare o modificare una riccorrenza di un orario non lavorativo.

Interruzione

Si tratta di periodi di una giornata lavorativa durante i quali un'entità si prende una pausa e non è disponibile per il lavoro. Le pause non possono esistere senza orario di lavoro; devono verificarsi tra due orari lavorativi in un giorno. Le pause non possono sovrapporsi agli orari di lavoro.

Utilizzando queste API, puoi eseguire le seguenti operazioni:

  • Creare o modificare le pause durante le ore lavorative.

Utilizzando queste API, non puoi eseguire le seguenti operazioni:

  • Elimina solo le pause da un'occorrenza o una ricorrenza dell'orario di lavoro.

Indisponibilità

Si tratta di periodi durante i quali un'entità non è disponibile a lavorare a causa di un congedo. Il motivo del congedo può essere specificato.

Utilizzando queste API, puoi eseguire le seguenti operazioni:

  • Creare o modificare il tempo libero con un'etichetta.
  • Modificare il fuso orario locale della regola del calendario.

Utilizzando queste API, non puoi eseguire le seguenti operazioni:

  • Creare o modificare una riccorrenza di un'orario di congedo.

Chiusura aziendale

Puoi creare entità di chiusura aziendale che definiscono gli orari di chiusura dell'attività. Usando l'API msdyn_SaveCalendar, puoi impostare ogni entità per osservare o ignorare i tempi di chiusura dell'attività dell'organizzazione utilizzando la chiave opzionale ObserveClosure. Quando sono impostati per osservare queste chiusure, le entità non saranno disponibili per il lavoro.

Salva API calendario

Input

La richiesta contiene un solo attributo CalendarEventInfo, che è un tipo Stringa. Contiene molti altri attributi che sono tutti incorporati in questa stringa.

Nota

Nella tabella seguente, Tipo rappresenta il formato previsto per effettuare una richiesta di successo. Tuttavia, l'intera richiesta viene analizzata come una singola stringa.

CalendarEventInfo

Nome Tipo Obbligatorio Descrizione
EntityLogicalName Stringa Questa chiave descrive l'entità da cui viene chiamata l'API. Il calendario di questa entità deve essere creato o modificato.
CalendarId GUID Questa chiave contiene l'ID del calendario relativo all'entità sopra descritta. Quando viene creata una di queste entità, viene creato automaticamente anche un record del calendario. Queste API modificano quel record di calendario aggiungendo regole o modificando regole esistenti.
RulesAndRecurrences RulesAndRecurrences Questa chiave è una matrice e ogni elemento contiene più attributi come elencato nella tabella nella sezione seguente. Le dimensioni dell'array dovrebbero essere almeno uno.
IsVaried Booleano No Questa chiave dovrebbe essere impostata su true per scenari di ricorrenze personalizzate.
IsEdit Booleano No Questa chiave dovrebbe essere impostata su true per regole di modifica personalizzate.
TimeZoneCode Intero No Questa chiave accetta un valore intero corrispondente al fuso orario per le regole del calendario. Per la mappatura, vai a Codici fuso orario, più avanti in questo articolo. Il valore predefinito è il fuso orario dell'utente.
InnerCalendarDescription Stringa No Questa chiave è necessaria solo se la regola del calendario è per il congedo. Dovrebbe contenere il motivo del congedo.
ObserveClosure Booleano No Questa chiave è specifica per le ricorrenze. Se impostata su true, l'entità osserverà la chiusura dell'attività.
RecurrenceEndDate Data/Ora No Questa chiave è specifica per le ricorrenze. Contiene la data di fine della ricorrenza. Se il timestamp è 08:00:00 o precedente, la data di fine della ricorrenza è un giorno prima della data specificata. Se il timestamp è 08:00:01 o successivo, la data viene rispettata così com'è. Il valore predefinito per le occorrenze è null. Il valore predefinito per le ricorrenze è 30 dic 9999, 23:59:59, UTC.
RecurrenceSplit Booleano No Questa chiave è specifica per le ricorrenze. È impostato su true per la modifica di "Questa occorrenza e le seguenti" di una ricorrenza.
ResourceId GUID No Questa chiave contiene SystemUserId o ResourceId e deve essere passato solo quando l'entità associata a questa chiamata è una risorsa prenotabile di tipo SystemUser. Questo è necessario per verificare i privilegi di OwnCalendar nella scheda Gestione dei servizi.
Usa V2 Contrassegno No Il passaggio di questo flag abilita la versione V2 del calendario delle ore di lavoro, con una logica di regole di sovrapposizione migliorata che consente più ricorrenze. Per ulteriori informazioni, vedi Cosa succede se ci sono regole che si sovrappongono?.

RulesAndRecurrences

Nome Type Obbligatorio Descrizione
Regole Regole Questa chiave è una matrice e ogni elemento contiene più attributi come elencato nella tabella nella sezione seguente. Le dimensioni dell'array dovrebbero essere almeno uno.
RecurrencePattern Stringa No Questa chiave è specifica per le ricorrenze. Attualmente supportiamo solo questo modello: FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA. BYDAY può essere modificato per includere meno giorni; tuttavia, FREQ e INTERVAL non possono essere modificati.
InnerCalendarId GUID No Questa chiave è specifica per la modifica. Se una regola è in fase di modifica, InnerCalendarId deve essere passato qui. Se un InnerCalendarId non viene passato, l'API crea una nuova regola, anche se la chiave IsEdit è impostata su true.
Azione Intero No Questa chiave è specifica per le ricorrenze personalizzate. Se si sta creando o modificando una ricorrenza personalizzata, è necessario inserire uno dei seguenti numeri:
  • (1) Aggiungere un giorno alla ricorrenza
  • (2) Eliminazione di un giorno dalla ricorrenza
  • (3) Modificare solo le date o le ore di inizio o di fine o modificare la capacità
  • (4) Modificare qualsiasi cosa diversa dalle chiavi menzionate in (3)

Regole

Nome Digita Richiesto Descrizione
StartTime DataOra Questa chiave contiene una voce datetime in formato ISO. Ad esempio: \"2021-05-15T12:00:00.000Z\". La parte relativa all'ora determina l'ora di inizio dell'ora lavorativa nel fuso orario specificato in precedenza. La parte relativa alla data determina la data di inizio dell'ora lavorativa. In questo esempio, il 15 maggio 2021 è la data dell'occorrenza o la data di inizio della ricorrenza. Se il modello fosse BYDAY=TU,WE, ma il 15 maggio (un sabato) è la data, l'API creerà o modificherà automaticamente le regole per tutti i martedì e i mercoledì successivi al 15 maggio. Questo è il caso in cui la regola non deve avere la data corrispondente al giorno.
EndTime DataOra Questo contiene una voce datetime in formato ISO. Ad esempio: \"2021-05-15T12:00:00.000Z\". La parte relativa all'ora determina l'ora di fine dell'ora lavorativa nel fuso orario specificato in precedenza. La parte della data deve contenere la stessa data della parte relativa alla data del StartTime. Le uniche eccezioni sono:
  • Se è un'occorrenza Giornata intera. In questo caso, la parte relativa alla data dovrebbe riflettere la data di fine dell'occorrenza dell'intera giornata.
  • L'occorrenza termina alla fine della giornata ovvero alle 12:00 del giorno successivo. In questo caso, la data dovrebbe essere \"2021-05-16T00:00:00.000Z\". Per specificare la data di fine della ricorrenza, modificare l'attributo RecurrenceEndDate.
WorkHourType Intero Questa chiave contiene un numero corrispondente a una delle seguenti opzioni:
  • (0) In esecuzione
  • (1) Interruzione
  • (2) Non lavorativo
  • (3) Indisponibilità
Lavoro Intero No Questa chiave determina la capacità dell'entità. Deve essere un numero intero. Il valore predefinito è 1.

Output

Questa API POST crea o modifica i record delle regole di calendario per l'entità selezionata. Fornisce anche il seguente output.

Nome Tipo Descrizione
InnerCalendarIds Stringa Una matrice di GUID InnerCalendarIds che sono il risultato dell'operazione POST.

Elimina API calendario

Input

Nome Tipo Obbligatorio Descrizione
EntityLogicalName Stringa Questo campo descrive l'entità le cui regole di calendario devono essere eliminate.
InnerCalendarId GUID Questo campo descrive l'ID di InnerCalendarId che deve essere cancellato. Se ci sono più InnerCalendarIds associati a una singola regola, qui è sufficiente un ID qualsiasi. Maggiori informazioni sui calendari interni ed esterni: Entità del calendario
CalendarId GUID Questo campo descrive il CalendarId dell'entità.
IsVaried Booleano No Questo campo è specifico per le ricorrenze ed è impostato su yes se una regola di ricorrenza personalizzata viene eliminata.
Usa V2 Contrassegno No Il passaggio di questo flag abilita la versione V2 del calendario delle ore di lavoro, con una logica di regole di sovrapposizione migliorata che consente più ricorrenze. Per ulteriori informazioni, vedi Cosa succede se ci sono regole che si sovrappongono?.

Output

Questa API POST elimina i record delle regole di calendario per l'entità selezionata. Inoltre, fornisce anche il seguente output.

Nome Digita Descrizione
InnerCalendarIds Stringa Una matrice di GUID InnerCalendarIds che sono il risultato dell'operazione POST.

Carica calendario API

Input

Nome: msdyn_LoadCalendars
Tipo: Azione
Descrizione: restituisce i calendari per un determinato LoadCalendarsInput.

Nome: msdyn_LoadCalendars.LoadCalendarsInput
Tipo: parametro
Descrizione: stringa nel seguente formato JSON:

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

Nome: msdyn_LoadCalendarsResponse
Tipo: ComplexType
Descrizione: Contiene la risposta dall'azione msdyn_loadCalendars.

Nome: msdyn_LoadCalendarsResponse.CalendarEvents
Tipo: proprietà
Descrizione: stringa nel seguente formato JSON:

{
"calendarId": CalendarEventSlot[]
}

Dove calendarId è un guid appropriato che rappresenta il Guid del calendario e CalendarEventSlot è un oggetto con il seguente formato:

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

Come chiamare le API

Queste API possono essere chiamate utilizzando il browser.

  1. Apri il browser e l'organizzazione in cui devi apportare queste modifiche al calendario.
  2. Apri Strumenti di sviluppo (seleziona Ctrl+MAIUSC+I in Microsoft Edge, seleziona F12 in Google Chrome).
  3. Nella console, inserisci la seguente funzione, dopo aver sostituito [nome-organizzazione] con i dettagli dell'organizzazione (ad esempio, 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. Dopo che questa funzione è stata definita, puoi chiamarla per creare, modificare o eliminare i calendari utilizzando le API. Inserisci la seguente chiamata per salvare un calendario:
       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
                   }]
               }]
           }"
       })

Inserisci la seguente chiamata per eliminare un calendario:

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

Vedere la sezione seguente per esempi su come effettuare chiamate diverse in base alle proprie esigenze. Sostituire l'action della chiamata della funzione al passaggio 3 con msdyn_SaveCalendar o msdyn_DeleteCalendar e sostituire data con il relativo CalendarEventInfo.

Vedi anche la seguente schermata per una chiamata Power Automate all'azione msdyn_SaveCalendar: Chiamata Power Automate all'azione msdyn_SaveCalendar.

Scenari di esempio per l'utilizzo dell'API

Esaminiamo alcuni scenari per i quali puoi utilizzare queste API.

Bob e Tim sono autisti di camion per Contoso Enterprises a Bellevue, Washington. Il loro supervisore, Debbie, è responsabile per le modifiche ai loro calendari degli orari di lavoro. Debbie apporta queste modifiche utilizzando le API msdyn_SaveCalendar e msdyn_DeleteCalendar.

Creare un'occorrenza di un orario di lavoro.

Enzo dovrebbe consegnare i pacchi dalle 9:00 alle 17:00 il 15 maggio 2021. Debbie usa l'API msdyn_SaveCalendar.

Richiesta

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

Modificare un'occorrenza di un orario di lavoro.

Il programma di Enzo cambia quindi per iniziare alle 10:00 del 15 maggio 2021. Debbie usa l'API msdyn_SaveCalendar.

Richiesta

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

Eliminare un'occorrenza di un orario di lavoro.

Si presenta un'emergenza familiare ed Enzo deve annullare l'intera giornata di lavoro. Debbie usa l'API msdyn_DeleteCalendar.

Richiedi

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

Risposta

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

Creare una ricorrenza giornaliera dell'orario di lavoro.

A partire dal 20 maggio 2021, Enzo decide di lavorare con Contoso tutta la settimana dalle 8:00 alle 17:00 e smetterà di lavorare lì il 15 luglio 2021.

Richiedi

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

Risposta

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

Modificare una ricorrenza giornaliera di un orario di lavoro con una maggiore capacità

Enzo decide di smettere di lavorare per l'intera settimana del 15 giugno 2021 perché ha bisogno di una pausa. Fino ad allora, continuerà la pianificazione di tutta la settimana che aveva precedentemente concordato. Debora apporta queste modifiche utilizzando l'API msdyn_SaveCalendar.

Richiesta

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

Creare una ricorrenza settimanale dell'orario di lavoro

A partire dal 16 giugno 2021, Enzo lavorerà dalle 8:00 alle 17:00 il mercoledì e il venerdì e si prenderà una pausa dalle 12:00 alle 12:30 per il pranzo. Debora usa l'API msdyn_SaveCalendar, ma commette un errore e programma la pausa dalle 12:00 alle 13:00.

Richiedi

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

Risposta

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

Modificare una pausa da una ricorrenza settimanale dell'orario di lavoro

Debora quindi corregge il suo errore e cambia la pausa in modo che si verifichi dalle 12:00 alle 12:30 utilizzando l'API msdyn_SaveCalendar.

Richiesta

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

Creare una ricorrenza personalizzata dell'orario di lavoro

Tim lavora per Contoso il lunedì dalle 8:00 alle 17:00 e il mercoledì dalle 11:00 alle 15:00. Tim ha iniziato a lavorare per Contoso il 16 maggio 2021. Debora usa l'API msdyn_SaveCalendar per creare l'orario di lavoro di Tim.

Richiesta

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

Modificare una ricorrenza personalizzata dell'orario di lavoro

Il programma di Tim viene quindi modificato: il suo orario di lavoro ora è mercoledì dalle 17:00 alle 20:00 e giovedì dalle 10:00 alle 12:00. Il lunedì viene rimosso dalla sua pianificazione. Debora usa l'API msdyn_SaveCalendar per raggiungere questo obiettivo.

Richiedi

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

Risposta

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

Modificare una occorrenza di un orario lavorativo in una ricorrenza

Il 26 maggio 2021, Tim può lavorare solo dalle 13:00 alle 19:00. Debora usa l'API msdyn_SaveCalendar qui.

Richiedi

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

Risposta

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

Eliminare una ricorrenza personalizzata dell'orario di lavoro

Tim deve eliminare tutta la sua pianificazione perché ha deciso di lasciare l'azienda. Debora usa l'API msdyn_DeleteCalendar qui.

Richiedi

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

Risposta

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

Creare l'indisponibilità

Tim si prenderà tre giorni di ferie per una vacanza in famiglia a partire dal 9 giugno 2021.

Richiesta

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

Creare orari di lavoro per l'intera giornata

Tim ha un turno di 72 ore a partire dal 20 maggio 2021. Debora usa l'API msdyn_SaveCalendar per creare l'orario di lavoro di Tim.

Richiedi

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

Risposta

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

Domande frequenti su

Ricevo l'errore "StartTime non può essere maggiore o uguale a EndTime".

Assicurati che non ci siano sovrapposizioni negli intervalli di tempo delle diverse regole del calendario. Controlla le date per assicurarti che StartTime non sia successiva rispetto a EndTime. Inoltre, verifica che gli orari seguano il formato 24 ore.

Si possono usare le API per aggiornare le entità "Modelli di ore lavorative"?

Sì, puoi usare questa API per creare e aggiornare i modelli e le ore lavorative delle risorse.

Ricevo l'errore "C'è stato un errore nella deserializzazione dell'oggetto di tipo Microsoft.Dynamics.UCICalendar.Plugins.SaveCalendarContract+CalendarEventInfo. La sorgente di ingresso non è formattata correttamente.
o
Atteso lo stato "Elemento".. Trovato "Testo" con nome '', spazio dei nomi ''."

Assicurati che la stringa sia stata analizzata correttamente. Potrebbero mancare parentesi, virgole o punti e virgola.

Ricevo l'errore "Modello di ricorrenza non valido. Fare riferimento alla documentazione per i modelli supportati".

Attualmente supportiamo solo questo modello: FREQ=DAILY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA. BYDAY può essere modificato per includere meno giorni; tuttavia, FREQ e INTERVAL non possono essere modificati. Assicurati che non ci siano spazi nel modello.

Come possiamo ottenere informazioni sul CalendarId e l'InnerCalendarId della risorsa?

Il CalendarId può essere recuperato dagli attributi della risorsa. Fate questa telefonata per ottenere queste informazioni: [org-url]/api/data/v9.1/bookableresources([bookableresourceGUID]).

Un esempio della chiamata precedente sarebbe [org-url]/api/data/v9.1/bookableresources(7bb0224b-6712-ec11-94f9-000d3a6d888e).

Il InnerCalendarId può essere recuperato dagli attributi del calendario. Fai questa telefonata per ottenere queste informazioni: [org-url]/api/data/v9.1/calendars([calendar-id-from-above-call])?$expand=calendar_calendar_rules.

Un esempio della chiamata precedente è [org-url]/api/data/v9.1/calendars(02481736-1b6a-4d49-9ebd-a5bd041c1c99)?$expand=calendar_calendar_rules.

Cosa succede se ci sono regole che si sovrappongono?

Ci sono un paio di gradi diversi in cui rientrano le regole:

  • Grado 1: occorrenza giornaliera (lavoro/non lavoro), e occorrenza del tempo libero.
  • Grado 0: ricorrenza settimanale (lavoro/non lavoro).

Regole di sovrapposizione V2

  • Le regole Grado 1 hanno una priorità più alta delle regole Grado 0. Così, se ci sono due regole (una di ogni rango) nello stesso giorno, l'occorrenza giornaliera o l'occorrenza time-off avrà la priorità sulla ricorrenza settimanale.
  • Quando sono presenti più regole di classificazione 0 nello stesso intervallo di date:
    • Se i tempi non si sovrappongono, rimarranno entrambi sul calendario.
    • Se i tempi si sovrappongono, la regola che è stata creata/modificata più recentemente sarà quella considerata per il calendario della risorsa. Tutte le altre regole che si sovrappongono nell'intervallo di date vengono rimosse. Se alcune regole di classificazione 0 presentano intersezioni in alcune date ma non in altre, la regola viene unita per conservare le sezioni che non si sovrappongono, mentre le parti sovrapposte vengono rimosse.

Esempi di comportamento del calendario V2:

Esempio 1: ripetizione dell'orario di lavoro: date sovrapposte senza giorni/orari sovrapposti

Per un determinato intervallo di date, un tecnico lavora su turni mattutini, pomeridiani o notturni in giorni diversi.

  1. Crea una prima regola di calendario ricorrente per un determinato intervallo di date. Ad esempio: Ripeti lun, mar; 1.1-4.1; 8:00-17:00 ET.

  2. Crea una seconda regola di calendario ripetuta per un intervallo di date intersecante, assicurandoti che le ore lavorative non si sovrappongano ai giorni o agli orari precedenti. Ad esempio: Ripeti mercoledì, giovedì; 1.1-4.1; 8:00-17:00 ET o Ripeti lun, mar; 1.1-4.1; 17:00-20:00 ET.

Risultato: entrambe le regole del calendario rimangono e coesistono l'una accanto all'altra.

Esempio 2: ripetizione dell'orario di lavoro: alcune date sovrapposte, con tutti i giorni sovrapposti e la seconda regola inizia/termina prima o dopo la prima regola

Un tecnico ottiene un nuovo programma di lavoro, che sostituisce alcune settimane del vecchio programma. Per contratto lavorano sempre gli stessi giorni ogni settimana.

  1. Crea una prima regola di calendario ricorrente per un determinato intervallo di date. Ad esempio: Ripeti lun, mar; 2.1-4.1; 8:00-17:00 ET.

  2. Crea una seconda regola di calendario ripetuta per un intervallo di date sovrapposto, in cui tutti i giorni hanno orari di lavoro sovrapposti. Scegli le date di inizio/fine per questa nuova regola che sono precedenti o successive alla data di inizio/fine per la prima regola. Ad esempio: Ripeti lun, mar; 3.1-5.1; 13:00-20:00 ET.

Risultato: la prima regola viene troncata per adattarsi alla data di inizio/fine della seconda regola. Ad esempio: Ripeti lun, mar; 2.1-2.28; 8:00-17:00 ET E Ripeti lun, mar; 3.1-5.1; 13:00-20:00 ET.

Esempio 3: ripetizione dell'orario di lavoro: tutte le date sovrapposte con alcuni giorni/orari sovrapposti

Il tecnico è un lavoratore a contratto a tempo determinato di 2 mesi. Ha accettato di assumere un lavoro aggiuntivo in alcuni giorni. Vuole spostare l'orario di lavoro del martedì in un orario precedente/successivo.

  1. Crea alcune regole di calendario ricorrente per un determinato intervallo di date. Ad esempio: Ripeti lun, mar; 2.1-4.1; 8:00-12:00 ET E Ripeti mar, mer; 2.1-4.1; 13:00-17:00 ET.

  2. Crea una nuova regola di calendario ricorrente per lo stesso intervallo di date. Scegli giorni/orari che si sovrappongono parzialmente alle regole originali. Ad esempio: Ripeti mar, gio; 2.1-4.1; 10:00-14:00 ET.

Risultato: la nuova regola sovrascrive la vecchia dove ci sono sovrapposizioni e lascia invariate le altre. Ad esempio: Ripeti lun; 2.1-4.1; 8:00-12:00 ET E Ripeti mer; 2.1-4.1; 13:00-17:00 ET E Ripeti mar, gio; 2.1-4.1; 10:00-14:00 ET.

Esempio 4: ripetizione dell'orario di lavoro: nuove date della regola contenute nella vecchia regola, alcuni giorni/orari sovrapposti

Un tecnico lavora dalle 8:00 alle 17:00, dal lunedì al venerdì ogni settimana. Solo per due settimane, gestiranno uno speciale progetto di emergenza ogni lunedì-mercoledì con orari di lavoro diversi dalle 6:00 alle 18:00.

  1. Crea una prima regola di calendario ricorrente per un determinato intervallo di date. Ad esempio: Ripeti lun, mar,mer,gio,ven; 1.1-Nessuna data di fine; 8:00-17:00 ET.

  2. Crea una seconda regola di calendario ripetuta contenuta nell'intervallo di date sopra indicato, scegli orari di lavoro che si sovrappongono in alcuni giorni. Ad esempio: Ripeti lun, mar, mer; 5.1-5.14; 6:00-18:00 ET.

Risultato: il calendario dovrebbe avere quattro regole ripetute entro la fine di questo esercizio:

  • tronca la prima regola alla data di inizio della seconda regola
  • la seconda regola del calendario
  • creare una nuova regola simile alla prima regola ma con le date della seconda regola per i giorni non sovrapposti
  • troncare la prima regola per iniziare dalla data di fine della seconda regola senza data di fine

Ad esempio: Ripeti lun, mar,mer,gio,ven; 1.1–4.30; 8:00-17:00 ET E Ripeti lun, mar, mer; 5.1-5.14; 6:00-18:00 ET E Ripeti gio, ven, 5.1-5.14; 8:00-17:00 ET E Ripeti lun, mar, mer, gio, ven; 5.15–Nessuna data di fine; 8:00-17:00 ET

Esempio 5: orario di lavoro non ripetitivo (occorrenza, regola di grado 1)

Un tecnico ha a disposizione un numero di giorni di coesione del team, che hanno la precedenza su tutte le altre ore lavorative della giornata.

  1. Crea una regola di calendario ricorrente per un determinato intervallo di date. Ad esempio: Ripeti lun, mar,mer,gio,ven; 1.1-Nessuna data di fine; 8:00-17:00 ET.

  2. Crea una regola di calendario non ripetitiva contenuta nell'intervallo di date sopra indicato. Scegli orari di lavoro che si sovrappongono in alcuni giorni. Ad esempio: Non ripetibile; 6.21; 7:00-13:00 ET.

Risultato: il calendario deve avere 1 regola non ripetitiva (occorrenza) entro la fine dell'esercizio. La regola non ripetitiva sostituisce l'evento di ripetizione sovrapposto per l'intera giornata. Ad esempio: Ripeti lun, mar, mer, gio, ven; 1.1-Nessuna data di fine eccetto 6.21; non ripetibile; 6.21; 7:00-13:00 ET.

Regole di sovrapposizione V1

  • Le regole Grado 1 hanno una priorità più alta delle regole Grado 0. Così, se ci fossero due regole (una di ogni grado) nello stesso giorno, l'occorrenza giornaliera o l'occorrenza time-off avrà la priorità sulla ricorrenza settimanale.
  • Se ci sono due regole dello stesso rango, la regola che è stata creata/modificata più recentemente sarà quella considerata per il calendario della risorsa.
  • Tenete a mente che le occorrenze per tutto il giorno sono di grado 1, quindi potreste considerare di cambiarla in una ricorrenza settimanale per essere in grado di aggiungere ore di lavoro di occorrenza e farle rispettare.
  • Quando esiste un'ora di lavoro e viene creato un tempo libero che si sovrappone ad essa, le regole si dividono in modo da assicurare che il tempo libero sia rispettato, e qualsiasi tempo rimanente come orario di lavoro rimarrà tale. Per esempio, se c'è un orario di lavoro dalle 8.00 alle 17.00 il 21 settembre, e si aggiunge un evento di time-off dalle 15.00 alle 19.00 il 21 settembre, questo verrebbe risolto come orario di lavoro dalle 8.00 alle 15.00 e time-off dalle 15.00 alle 19.00. Tuttavia, se le regole sono state create nell'ordine opposto (il tempo libero creato per primo e poi le ore di lavoro), indipendentemente dalle fasce orarie, solo l'ora di lavoro verrebbe riselezionata. Il tempo libero verrebbe annullato.

Codici fusi orari

Enumerazione Fuso orario
0 (GMT - 12.00 h) Linea cambiamento data internazionale (occidentale)
1 (GMT + 13.00 h) Samoa
2 (GMT - 10.00 h) Hawaii
3 (GMT - 9.00 h) Alaska
4 (GMT -08:00) Ora del Pacifico (Stati Uniti e Canada)
5 (GMT - 8.00 h) Bassa California
6 (GMT - 11.00 h) Coordinated Universal Time - 11
7 (GMT - 10.00 h) Isole Aleutine
8 (GMT - 9.30 h) Isole Marquesas
9 (GMT-09:00 h) Coordinated Universal Time-09
10 (GMT -07:00) Fuso occidentale (Stati Uniti e Canada)
11 (GMT-08:00 h) Coordinated Universal Time-08
12 (GMT - 7.00 h) Chihuahua, La Paz, Mazatlan
15 (GMT - 7.00 h) Arizona
20 (GMT -06:00) Ora centrale (Stati Uniti e Canada)
25 (GMT - 6.00 h) Saskatchewan
29 (GMT - 6.00 h) Guadalajara, Città del Messico, Monterrey
33 (GMT - 6.00 h) America centrale
34 (GMT - 6.00 h) Isola di Pasqua
35 (GMT -05:00) Ora orientale (Stati Uniti e Canada)
40 (GMT - 5.00 h) Indiana (Est)
43 (GMT - 5.00 h) Haiti
44 (GMT - 5.00 h) L'Avana
45 (GMT - 5.00 h) Bogotà, Lima, Quito, Rio Branco
47 (GMT - 4.00 h) Caracas
50 (GMT - 4.00 h) Ora costa atlantica (Canada)
51 (GMT-05.00) Isole Turks e Caicos
55 (GMT - 4.00 h) Georgetown, La Paz, San Juan
56 (GMT - 4.00 h) Santiago
58 (GMT - 4.00 h) Cuiaba
59 (GMT - 4.00 h) Asunción
60 (GMT - 3.30 h) Terranova
65 (GMT - 3.00 h) Brasilia
69 (GMT - 3.00 h) Buenos Aires
70 (GMT - 3.00 h) Caienna, Fortaleza
71 (GMT - 3.00 h) Salvador
72 (GMT-03:00) Saint-Pierre e Miquelon
73 (GMT - 3.00 h) Groenlandia
74 (GMT - 3.00 h) Montevideo
75 (GMT - 2.00 h) Medioatlantico
76 (GMT - 2.00 h) Coordinated Universal Time - 2
77 (GMT - 3.00 h) Araguaina
80 (GMT - 1.00 h) Azzorre
83 (GMT-01:00 h) Is. di Cabo Verde
84 (GMT+01.00) Casablanca
85 (GMT+00:00) Dublino, Edimburgo, Lisbona, Londra
90 (GMT + 0.00 h) Monrovia, Reykjavik
92 (GMT) Coordinated Universal Time
95 (GMT + 1.00 h) Belgrado, Bratislava, Budapest, Lubiana, Praga
100 (GMT + 1.00 h) Sarajevo, Skopje, Varsavia, Zagabria
105 (GMT + 1.00 h) Bruxelles, Copenaghen, Madrid, Parigi
110 (GMT + 1.00 h) Amsterdam, Berlino, Berna, Roma, Stoccolma, Vienna
113 (GMT + 1.00 h) Africa centro-occidentale
115 (GMT + 2.00 h) Chisinau
120 (GMT + 2.00 h) Cairo
125 (GMT + 2.00 h) Helsinki, Kiev, Riga, Sofia, Tallinn, Vilnius
129 (GMT + 2.00 h) Amman
130 (GMT + 2.00 h) Atene, Bucarest
131 (GMT + 2.00 h) Beirut
133 (GMT + 2.00 h) Damasco
134 (GMT+ 03.00 h) Istanbul
135 (GMT + 2.00 h) Gerusalemme
140 (GMT + 2.00 h) Harare, Pretoria
141 (GMT+ 02.00) Windhoek
142 (GMT + 2.00 h) Gaza, Hebron
145 (GMT + 3.00 h) Mosca, S. Pietroburgo
150 (GMT + 3.00 h) Kuwait, Riyad
151 (GMT + 3.00 h) Minsk
155 (GMT + 3.30 h) Nairobi
158 (GMT + 3.00 h) Baghdad
159 (GMT + 2.00 h) Kaliningrad
160 (GMT + 3.30 h) Teheran
165 (GMT + 4.00 h) Abu Dhabi, Muscat
169 (GMT + 4.00 h) Baku
170 (GMT + 4.00 h) Yerevan
172 (GMT + 4.00 h) Port Louis
173 (GMT + 4.00 h) Tbilisi
174 (GMT + 4.00 h) Izhevsk, Samara
175 (GMT + 4.30 h) Kabul
176 (GMT + 4.00 h) Astrakhan, Ulyanovsk
180 (GMT + 5.00 h) Ekaterinburg
184 (GMT + 5.00 h) Islamabad, Karachi
185 (GMT + 05.00) Toshkent
190 (GMT + 5.30 h) Chennai, Kolkata (Calcutta), Mumbai, Nuova Delhi
193 (GMT + 5.45 h) Kathmandu
195 (GMT + 6.00 h) Astana
196 (GMT + 6.00 h) Dacca
197 (GMT + 06.00 h) Omsk
200 (GMT + 5.30 h) Sri Jayawardenepura
201 (GMT + 07.00 h) Novosibirsk
203 (GMT + 6.30 h) Yangon (Rangoon)
205 (GMT + 7.00 h) Bangkok, Hanoi, Giacarta
207 (GMT + 7.00 h) Krasnoyarsk
208 (GMT + 7.00 h) Barnaul, Gorno - Altaysk
209 (GMT + 7.00 h) Hovd
210 (GMT + 8.00 h) Pechino, Chongqing, Hong Kong - R.A.S., Urumqi
211 (GMT + 7.00 h) Tomsk
215 (GMT + 8.00 h) Kuala Lumpur, Singapore
220 (GMT + 8.00 h) Taipei
225 (GMT + 8.00 h) Perth
227 (GMT + 8.00 h) Irkutsk
228 (GMT + 8.00 h) Ulan-Bator
229 (GMT+09:00) Pyongyang
230 (GMT + 9.00 h) Seoul
231 (GMT + 8.45 h) Eucla
235 (GMT + 9.00 h) Osaka, Sapporo, Tokyo
240 (GMT + 9.00 h) Yakutsk
241 (GMT + 9.00 h) Chita
245 (GMT + 9.30 h) Darwin
250 (GMT + 9.30 h) Adelaide
255 (GMT + 10.00 h) Canberra, Melbourne, Sydney
260 (GMT + 10.00 h) Brisbane
265 (GMT + 10.00 h) Hobart
270 (GMT + 10.00 h) Vladivostok
274 (GMT+10:30) Isola di Lord Howe
275 (GMT + 10.00 h) Guam, Port Moresby
276 (GMT + 11.00 h) Bougainville
277 (GMT + 11.00 h) Norfolk
278 (GMT + 11.00 h) Sakhalin
279 (GMT + 11.00 h) Chokurdakh
280 (GMT+11.00) Is. Salomone, Nuova Caledonia
281 (GMT + 11.00 h) Magadan
284 (GMT + 12.00 h) Coordinated Universal Time + 12
285 (GMT + 12.00 h) Figi
290 (GMT + 12.00 h) Auckland, Wellington
295 (GMT + 12.00 h) Anadyr, Petropavlovsk - Kamchatsky
299 (GMT + 12.45 h) Isole Chatham
300 (GMT + 13.00 h) Nuku'alofa
301 (GMT - 5.00 h) Chetumal
302 (UTC+02:00) Khartoum
303 (GMT-03:00) Punta Arenas
304 (GMT + 4.00 h) Volgograd
305 (GMT-07:00) Yukon