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 | Sì | Questa chiave descrive l'entità da cui viene chiamata l'API. Il calendario di questa entità deve essere creato o modificato. |
CalendarId | GUID | Sì | 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 | Sì | 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 | Sì | 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:
|
Regole
Nome | Digita | Richiesto | Descrizione |
---|---|---|---|
StartTime | DataOra | Sì | 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 | Sì | 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:
|
WorkHourType | Intero | Sì | Questa chiave contiene un numero corrispondente a una delle seguenti opzioni:
|
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 | Sì | Questo campo descrive l'entità le cui regole di calendario devono essere eliminate. |
InnerCalendarId | GUID | Sì | 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 | Sì | 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.
- Apri il browser e l'organizzazione in cui devi apportare queste modifiche al calendario.
- Apri Strumenti di sviluppo (seleziona Ctrl+MAIUSC+I in Microsoft Edge, seleziona F12 in Google Chrome).
- 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));
}
- 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
:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 |