Modifier les calendriers des heures de travail à l’aide des API
Les organisations ont souvent besoin de créer, modifier ou supprimer par programmation des heures de travail sur les calendriers de leurs ressources. Les calendriers affichent les heures de travail, les absences et les pauses qui déterminent la disponibilité d’une ressource lors de la planification du travail. Ces ressources doivent être planifiées dans des fuseaux horaires spécifiques, peuvent observer ou non les horaires de fermeture de l’entreprise et peuvent avoir des disponibilités variables. Pour plus d’informations sur la définition des heures de travail dans l’application Field Service, accédez à Ajouter des heures de travail à une ressource réservable.
En plus d’utiliser l’application Field Service, vous pouvez utiliser les API suivantes pour modifier les règles de calendrier pour les types d’enregistrement sélectionnés :
- L’API Enregistrer le calendrier (
msdyn_SaveCalendar
) crée ou met à jour des enregistrements de calendrier sur une entité sélectionnée, en fonction des entrées transmises en tant que demande. - L’API Supprimer le calendrier (
msdyn_DeleteCalendar
) supprime toutes les règles internes du calendrier sur une entité sélectionnée, en fonction des entrées transmises en tant que requête. - L’API Save/Delete Calendar V2 (msdyn_SaveCalendar/msdyn_DeleteCalendar, indicateur de passage UseV2) autorise plusieurs récurrences d’heures de travail simultanément en modifiant la logique des règles de chevauchement. Pour plus d’informations, voir Que se passe-t-il en cas de règles de chevauchement ?.
Cet article fournit des détails sur l’entrée (requête) et la sortie (réponse) de chaque API, et leur utilisation, avec des exemples.
Conditions préalables
- Version de la plateforme 9.2.21055 ou supérieure avec la planification universelle des ressources version 3.12.45.7.
- Utilisation de l’un des types d’enregistrement suivants :
- Ressource pouvant être réservée (bookableresource)
- Ressource requise (msdyn_resourcerequirement)
- Modèle d’heure de travail (msdyn_workhourtemplate)
- Projet (msdyn_project)
Types d’événements du calendrier
Lorsque vous créez un calendrier, vous définissez combien de fois un type d’heure de travail est utilisé : une fois, toute la journée, chaque semaine ou chaque jour, ou selon une périodicité personnalisée. Pour plus d’informations sur ces événements de calendrier, consultez les exemples plus loin dans cet article.
Occurrence
Lorsqu’un type d’heure de travail n’apparaît qu’une seule fois dans le calendrier de l’entité, cela s’appelle une occurrence.
Prenons l’exemple d’une ressource travaillant de 5 h à 10 h le 26 mai 2021. Ces API ne prennent en charge que ce type d’occurrence, qui commence et se termine le même jour. Pour un autre exemple, considérons une ressource travaillant du 26 mai 2021 à 20 h au 27 mai 2021 à 10 h. Vous ne pouvez pas créer cette occurrence en utilisant un seul appel de l’API msdyn_SaveCalendar
; vous devez passer deux appels à la place.
Occurrence toute la journée
Lorsqu’un type d’heure de travail se produit pendant un ou plusieurs jours entiers, commençant à minuit (00 h 00) à la date de début, c’est une occurrence toute la journée. La durée maximale d’un événement d’une journée entière est de cinq ans.
Par exemple, une ressource travaille toute la journée du 26 mai 2021 à la fin de la journée du 30 mai 2021. Il s’agit d’un événement qui dure toute la journée et qui dure cinq jours.
Périodicité hebdomadaire
Lorsqu’un type d’heure de travail se produit à la même heure certains jours de chaque semaine, cela s’appelle une périodicité hebdomadaire.
Par exemple, une ressource fonctionne de 5 h à 10 h tous les lundis, mardis et mercredis.
Périodicité quotidienne
Lorsqu’un type d’heure de travail se produit à la même heure chaque jour, cela s’appelle une périodicité hebdomadaire.
Par exemple, une ressource fonctionne de 5 h à 10 h chaque jour de la semaine.
Périodicité personnalisée
Lorsqu’un type d’heure de travail se produit à certaines heures certains jours de la semaine, mais que les heures sont différentes selon les jours, vous pouvez créer une périodicité personnalisée.
Par exemple, une ressource travaille de 5 h 00 à 10 h00 tous les lundis et de 12 h 00 à 15 h 00 tous les mercredis.
Types d’heures de travail
Ces API prennent en charge les opérations de création, de mise à jour et de suppression des types d’heures de travail suivants :
Heures de travail
Les heures de travail sont les périodes pendant lesquelles une entité est disponible pour effectuer un travail.
Vous pouvez faire ce qui suit avec ces API :
- Créer, modifier ou supprimer une occurrence d’heure de travail.
- Créer, modifier ou supprimer une périodicité quotidienne d’heure de travail.
- Créer, modifier ou supprimer une périodicité hebdomadaire d’heure de travail.
- Créer, modifier ou supprimer une périodicité personnalisée d’heure de travail.
- Créer, modifier ou supprimer les heures de travail de la journée entière.
- Créer ou modifier la capacité pour les heures de travail.
- Modifier une seule occurrence d’heure de travail dans une périodicité.
- Modifier Cette occurence et les suivantes dans une périodicité.
- Remplacer une occurrence d’heure de travail par une périodicité.
- Modifier le fuseau horaire de la règle de calendrier.
Vous ne pouvez pas faire ce qui suit avec cette API :
- Supprimer une seule occurrence d’heure de travail à partir d’une périodicité.
- Créer une occurrence qui s’étend sur 24 heures, mais qui ne commence et ne se termine pas à minuit (00 h 00).
- Créer, modifier ou supprimer une périodicité de journée entière.
Heure chômée
Il s’agit des périodes pendant lesquelles l’entité n’est pas disponible pour travailler pour une raison non précisée.
Vous pouvez faire ce qui suit avec ces API :
- Créer ou modifier les heures chômées de la journée entière.
- Créer ou modifier une occurrence d’heure chômée.
- Modifier le fuseau horaire de la règle de calendrier.
Vous pouvez faire ce qui suit avec ces API :
- Créer ou modifier une périodicité d’heure chômée.
Pause
Il s’agit des moments d’une journée de travail pendant lesquels une entité prend une pause et n’est pas disponible pour travailler. Les pauses ne peuvent exister sans heures de travail ; elles doivent avoir lieu entre deux heures de travail dans une journée. Les pauses ne peuvent pas chevaucher les heures de travail.
Vous pouvez faire ce qui suit avec ces API :
- Créer ou modifier les pauses pendant les heures de travail.
Vous pouvez faire ce qui suit avec ces API :
- Supprimer uniquement les pauses d’une occurrence ou d’une périodicité d’heures de travail.
Absence
Il s’agit des périodes pendant lesquelles l’entité n’est pas disponible pour travailler en raison d’un congé. La raison de l’absence peut être précisée.
Vous pouvez faire ce qui suit avec ces API :
- Créer ou modifier des absences avec une étiquette.
- Modifier le fuseau horaire de la règle de calendrier.
Vous pouvez faire ce qui suit avec ces API :
- Créer ou modifier une périodicité d’heure de congé.
Fermeture des bureaux
Vous pouvez créer des entités de fermeture d’entreprise qui définissent les heures de fermeture de l’entreprise. En utilisant l’API msdyn_SaveCalendar
, vous pouvez configurer chaque entité pour qu’elle observe ou ignore les heures de fermeture des activités de l’organisation en utilisant la clé facultative ObserveClosure. Lorsqu’elles seront définies pour observer ces fermetures, les entités ne sont pas disponibles pour travailler.
Enregistrer l’API de calendrier
Entrée
La demande ne contient qu’un seul attribut : CalendarEventInfo, qui est un type Chaîne. Il contient plusieurs autres attributs qui sont tous incorporés dans cette chaîne.
Note
Dans le tableau suivant, Type représente le format attendu pour faire une demande réussie. Cependant, la demande entière est analysée comme une seule chaîne.
CalendarEventInfo
Nom | Type | Requis | Description |
---|---|---|---|
EntityLogicalName | String | Oui | Cette clé décrit l’entité à partir de laquelle l’API est appelée. Le calendrier de cette entité doit être créé ou modifié. |
CalendarId | GUID | Oui | Cette clé contient l’ID de calendrier lié à l’entité décrite ci-dessus. Lorsque l’une de ces entités est créée, un enregistrement de calendrier est également automatiquement créé. Ces API modifient cet enregistrement de calendrier en ajoutant des règles ou en modifiant des règles existantes. |
RulesAndRecurrences | RulesAndRecurrences | Oui | Cette clé est un tableau et chaque élément contient plusieurs attributs répertoriés dans le tableau de la section suivante. Le tableau contient au moins un élément. |
IsVaried | Boolean | Non | Cette clé doit être réglée sur true pour les scénarios de périodicité personnalisés. |
IsEdit | Boolean | Non | Cette clé doit être réglée sur true pour modifier les règles existantes. |
TimeZoneCode | Integer | Non | Cette clé prend une valeur entière correspondant au fuseau horaire des règles de calendrier. Pour la cartographie, consultez Codes de fuseau horaire, plus loin dans cet article. La valeur par défaut est le fuseau horaire de l’utilisateur. |
InnerCalendarDescription | String | Non | Cette clé n’est nécessaire que si la règle du calendrier concerne l’absence. Elle doit contenir la raison de l’absence. |
ObserveClosure | Boolean | Non | Cette clé est spécifique aux périodicités. Si elle est définie sur true , l’entité observe la fermeture de l’entreprise. |
RecurrenceEndDate | DateHeure | Non | Cette clé est spécifique aux périodicités. Elle contient la date de fin de la périodicité. Si l’horodatage est 08:00:00 ou antérieur, la date de fin de périodicité est un jour avant la date spécifiée. Si l’horodatage est 08:00:01 ou plus tard, la date est respectée telle quelle. La valeur par défaut des occurrences est null. La valeur par défaut pour les périodicités est le 30 décembre 9999, à 23:59:59, UTC. |
RecurrenceSplit | Boolean | Non | Cette clé est spécifique aux périodicités. Elle est définie sur true pour modifier « Cette occurrence et les suivantes » d’une périodicité. |
ResourceId | GUID | Non | Cette clé contient le SystemUserId ou alors ResourceId et n’est à transmettre que lorsque l’entité associée à cet appel est une ressource réservable de type SystemUser. Cela est nécessaire pour vérifier les privilèges OwnCalendar sur l’onglet Gestion des services. |
UseV2 | Indicateur | Non | Le passage de cet indicateur active la version V2 du calendrier des heures de travail, avec une logique de règles de chevauchement améliorée permettant plusieurs récurrences. Pour plus d’informations, voir Que se passe-t-il en cas de règles de chevauchement ?. |
RulesAndRecurrences
Nom | Type | Requise | Description |
---|---|---|---|
Règles | Règles | Oui | Cette clé est un tableau et chaque élément contient plusieurs attributs répertoriés dans le tableau de la section suivante. Le tableau contient au moins un élément. |
RecurrencePattern | String | Non | Cette clé est spécifique aux périodicités. Nous ne prenons actuellement en charge que ce modèle : FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA . BYDAY peut être modifié pour inclure moins de jours ; cependant, FREQ et INTERVAL ne peuvent pas être modifiés. |
InnerCalendarId | GUID | Non | Cette clé est spécifique à la modification. Si une règle est en cours de modification, InnerCalendarId doit être passé ici. Si InnerCalendarId n’est pas passé, l’API crée une nouvelle règle, même si la clé IsEdit est définie sur true. |
Pour | Integer | Non | Cette clé est spécifique aux périodicités personnalisées. Si une périodicité personnalisée est en cours de création ou de modification, l’un des chiffres suivants doit être saisi :
|
Règles
Nom | Type | Obligatoire | Description |
---|---|---|---|
StartTime | DateTime | Oui | Cette clé contient une entrée datetime au Format ISO. Par exemple, \"2021-05-15T12:00:00.000Z\" La partie horaire détermine l’heure de début de l’heure de travail dans le fuseau horaire spécifié précédemment. La partie date détermine la date de début de l’heure de travail. Ici, le 15 mai 2021 est la date d’occurrence ou la date de début de la périodicité. Si le motif était BYDAY=TU,WE , mais le 15 mai (un samedi) est la date, l’API créera ou modifiera automatiquement des règles pour tous les mardis et mercredis suivant le 15 mai. C’est le cas où la règle n’a pas besoin d’avoir la date correspondante au jour. |
EndTime | DateTime | Oui | Contient une entrée datetime au Format ISO. Par exemple, \"2021-05-15T12:00:00.000Z\" La partie horaire détermine l’heure de fin de l’heure de travail dans le fuseau horaire spécifié précédemment. La partie date doit contenir la même date que la partie date de l’Heure de début. Les seules exceptions sont :
|
WorkHourType | Integer | Oui | Cette clé contient un numéro correspondant à l’une des options suivantes :
|
Effort | Integer | Non | Cette clé détermine la capacité de l’entité. Doit être un nombre entier. La valeur par défaut est 1. |
Sortie
Cette API POST crée ou modifie des enregistrements de règles de calendrier pour l’entité sélectionnée. Elle donne également la sortie suivante.
Nom | Type | Description |
---|---|---|
InnerCalendarIds | String | Un tableau de GUID InnerCalendarIds résultant de l’opération POST. |
Supprimer une API de calendrier
Entrée
Nom | Type | Requis | Description |
---|---|---|---|
EntityLogicalName | String | Oui | Ce champ décrit l’entité dont les règles de calendrier doivent être supprimées. |
InnerCalendarId | GUID | Oui | Ce champ décrit l’ID InnerCalendarId qui doit être supprimé. S’il y a plusieurs InnerCalendarIds associés à une seule règle, n’importe quel identifiant suffit ici. Plus d’informations sur les calendriers intérieurs et extérieurs : Entités de calendrier |
CalendarId | GUID | Oui | Ce champ décrit le CalendarId de l’entité. |
IsVaried | Boolean | Non | Ce champ est spécifique aux périodicité et est défini sur yes si une règle de périodicité personnalisée est supprimée. |
UseV2 | Indicateur | Non | Le passage de cet indicateur active la version V2 du calendrier des heures de travail, avec une logique de règles de chevauchement améliorée permettant plusieurs récurrences. Pour plus d’informations, voir Que se passe-t-il en cas de règles de chevauchement ?. |
Sortie
Cette API POST supprime des enregistrements de règles de calendrier pour l’entité sélectionnée. De plus, elle donne la sortie suivante.
Nom | Type | Description |
---|---|---|
InnerCalendarIds | String | Un tableau de GUID InnerCalendarIds résultant de l’opération POST. |
Charger l’API du calendrier
Entrée
Nom : msdyn_LoadCalendars
Type : Action
Description : renvoie les calendriers pour un LoadCalendarsInput donné.
Nom : msdyn_LoadCalendars.LoadCalendarsInput
Type : Paramètre
Description : chaîne au format JSON suivant :
{
StartDate: string,
EndDate: string,
CalendarIds: string[]
}
Nom : msdyn_LoadCalendarsResponse
Type : ComplexType
Description : Contient la réponse de l’action msdyn_loadCalendars.
Nom : msdyn_LoadCalendarsResponse.CalendarEvents
Type : Propriété
Description : chaîne au format JSON suivant :
{
"calendarId": CalendarEventSlot[]
}
Où CalendarId est un guid approprié représentant le Guid du calendrier et CalendarEventSlot est un objet au format suivant :
{
CalendarId: string,
InnerCalendarId: string,
Start: string,
End: string,
Effort: double
}
Comment appeler les API ?
Ces API peuvent être appelées à l’aide du navigateur.
- Ouvrez le navigateur et l’organisation à laquelle vous devez apporter ces modifications de calendrier.
- Ouvrez les outils de développement (sélectionnez Ctrl+Shift+I in Microsoft Edge, sélectionnez F12 dans Google Chrome).
- Dans la console, entrez la fonction suivante, après avoir remplacé [org-name] par les détails de l’organisation (par exemple,
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));
}
- Une fois cette fonction définie, vous pouvez l’appeler pour créer, modifier ou supprimer des calendriers à l’aide des API. Saisissez l’appel suivant pour enregistrer un calendrier :
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
}]
}]
}"
})
Saisissez l’appel suivant pour supprimer un calendrier :
CalendarAction("msdyn_DeleteCalendar", {
"CalendarEventInfo":"{
\"CalendarId\":\"8390358c-77d0-430f-b176-f27adadac8eb\",
\"EntityLogicalName\":\"bookableresource\",
\"InnerCalendarId\":\"cf508c2c-5c55-485c-be1e-d2ebcb385441\"
}"
})
Consultez la section suivante pour obtenir des exemples sur la façon de passer différents appels en fonction de vos besoins. Remplacez l’appel de fonction action
à l’étape 3 avec msdyn_SaveCalendar
ou alors msdyn_DeleteCalendar
, et remplacez data
avec les CalendarEventInfo
correspondants.
Consultez également la capture d’écran suivante pour un appel Power Automate pour l’action msdyn_SaveCalendar
:
Exemples de scénarios d’utilisation de l’API
Examinons quelques scénarios pour lesquels vous pouvez utiliser ces API.
Bob et Tim sont chauffeurs de camion de livraison pour Contoso Enterprises à Bellevue, Washington. La chargée de distribution, Debbie, est chargée d’apporter des modifications à leurs calendriers d’heures de travail. Debbie effectue ces modifications en utilisant les API msdyn_SaveCalendar
et msdyn_DeleteCalendar
.
Créez une occurrence d’heure de travail.
Bob doit livrer des colis de 9 h à 17 h le 15 mai 2021. Debbie utilise l’API msdyn_SaveCalendar
.
Demande
{
"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\"]"
}
Modifier une occurrence d’heure de travail.
L’horaire de Bob est ensuite modifié à 10h00 le 15 mai 2021. Debbie utilise l’API msdyn_SaveCalendar
.
Demande
{
"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\"]"
}
Supprimer une occurrence d’heure de travail.
Une urgence familiale survient et Bob doit annuler toute une journée de travail. Debbie utilise l’API msdyn_DeleteCalendar
.
Demander
{
"CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"InnerCalendarId\":\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"}"
}
Réponse
{
"InnerCalendarIds": "[\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"]"
}
Créer une recurrence quotidienne d’heure de travail
À partir du 20 mai 2021, Bob décide de travailler avec Contoso toute la semaine de 8 h à 17 h et cesse d’y travailler le 15 juillet 2021.
Demander
{
"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\"}]}"
}
Réponse
{
"InnerCalendarIds": "[\"20f6cfa7-cfbe-eb11-a81d-000d3a6e4359\"]"
}
Modifier une périodicité quotidienne d’heure de travail avec une capacité accrue
Bob décide d’arrêter de travailler pendant toute la semaine du 15 juin 2021, car il a besoin d’une pause. Jusque-là, Bob suivra le calendrier habdomadaire qu’il a précédemment accepté. Debbie effectue ces modifications en utilisant l’API msdyn_SaveCalendar
.
Demande
{
"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\"]"
}
Créer une recurrence hebdomadaire d’heure de travail
À partir du 16 juin 2021, Bob travaillera de 8 h à 17 h les mercredis et vendredis, et fera une pause de 12 h à 12 h 30 pour le déjeuner. Debbie utilise l’API msdyn_SaveCalendar
, mais elle fait une erreur et programme la pause de 12 h à 13 h.
Demander
{
"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\"}]}"
}
Réponse
{
"InnerCalendarIds": "[\"1f894441-d0be-eb11-a81d-000d3a6e4359\"]"
}
Modifier la pause à partir de la périodicité hebdomadaire d’heure de travail
Debbie corrige ensuite son erreur et modifie la pause pour qu’elle se produise de 12 h à 12 h 30 en utilisant l’API msdyn_SaveCalendar
.
Demande
{
"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\"]"
}
Créer une périodicité personnalisée d’heure de travail
Tim travaille pour Contoso les lundis de 8h00 à 17h00 et les mercredis de 11h00 à 15h00. Tim a commencé à travailler pour Contoso le 16 mai 2021. Debbie utilise l’API msdyn_SaveCalendar
pour créer les heures de travail de Tim.
Demande
{
"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\"]"
}
Modifier une périodicité personnalisée d’heure de travail
L’horaire de Tim change alors : ses heures de travail sont désormais le mercredi de 17 h à 20 h et le jeudi de 10 h à 12 h. Le lundi est retiré de l’emploi du temps de Tim. Debbie utilise l’API msdyn_SaveCalendar
pour y parvenir.
Demander
{
"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\"}]}"
}
Réponse
{
"InnerCalendarIds": "[\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\", \"942bda0f-d3be-eb11-a81d-000d3a6e4359\"]"
}
Modifier une occurrence d’heure de travail dans une périodicité
Le 26 mai 2021, Tim ne pourra travailler que de 13h00 à 19h00. Debbie utilise l’API msdyn_SaveCalendar
ici.
Demander
{
"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\"}]}"
}
Réponse
{
"InnerCalendarIds": "[\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\"]"
}
Supprimer une périodicité personnalisée d’heure de travail
Tim doit supprimer tout son emploi du temps, car il a décidé de quitter l’entreprise. Debbie utilise l’API msdyn_DeleteCalendar
ici.
Demander
{
"CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"InnerCalendarId\":\"34d2210c-9fb6-eb11-a820-000d3afb1dba\",\"IsVaried\":true}"
}
Réponse
{
"InnerCalendarIds": "[\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\", \"942bda0f-d3be-eb11-a81d-000d3a6e4359\"]"
}
Créer une absence
Tim prendra trois jours de congé pour des vacances en famille à partir du 9 juin 2021.
Demande
{
"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\"]"
}
Créer des heures de travail pour la journée entière
Tim a un quart de travail de 72 heures à compter du 20 mai 2021. Debbie utilise l’API msdyn_SaveCalendar
pour créer les heures de travail de Tim.
Demander
{
"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}]}]}"
}
Réponse
{
"InnerCalendarIds": "[\"6e160a8e-d5be-eb11-a81d-000d3a6e4359\"]"
}
Questions fréquentes (FAQ)
J’obtiens l’erreur « StartTime ne peut pas être supérieur ou égal à EndTime. »
Assurez-vous qu’il n’y a pas de chevauchement dans les plages horaires des différentes règles du calendrier. Vérifiez les dates pour vous assurer que StartTime n’est pas postérieur à EndTime. Vérifiez également que les heures suivent le format 24 heures.
Les API peuvent-elles être utilisées pour mettre à jour l’entité « Modèles d’heures de travail » ?
Oui, vous pouvez utiliser cette API pour créer et mettre à jour des modèles d’heures de travail en plus des heures de travail des ressources.
J’obtiens l’erreur : « Une erreur s’est produite lors de la désérialisation de l’objet de type Microsoft.Dynamics.UCICalendar.Plugins.SaveCalendarContract+CalendarEventInfo. La source d’entrée n’est pas correctement formatée.
ou
Attente de l’état « Élément ». « Texte » rencontré avec le nom « , espace de noms ».
Assurez-vous que la chaîne est correctement analysée. Il peut y avoir des crochets, des virgules ou des points-virgules manquants.
J’obtiens l’erreur « Modèle de récurrence non valide. Reportez-vous à la documentation pour les modèles pris en charge. »
Nous ne prenons actuellement en charge que ce modèle : FREQ=DAILY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA
. BYDAY
peut être modifié pour inclure moins de jours ; cependant, FREQ
et INTERVAL
ne peuvent pas être modifiés. Assurez-vous qu’il n’y a pas d’espaces dans le modèle.
Comment obtenir des informations sur le CalendarId et le InnerCalendarId de la ressource ?
Le CalendarId
peut être récupéré à partir des attributs de ressource. Passez cet appel pour obtenir cette information : [org-url]/api/data/v9.1/bookableresources([bookableresourceGUID])
.
Un exemple de l’appel précédent serait [org-url]/api/data/v9.1/bookableresources(7bb0224b-6712-ec11-94f9-000d3a6d888e)
.
Le InnerCalendarId
peut être récupéré à partir des attributs de calendrier. Passez cet appel pour obtenir cette information : [org-url]/api/data/v9.1/calendars([calendar-id-from-above-call])?$expand=calendar_calendar_rules
.
Un exemple de l’appel précédent est [org-url]/api/data/v9.1/calendars(02481736-1b6a-4d49-9ebd-a5bd041c1c99)?$expand=calendar_calendar_rules
.
Que se passe-t-il s’il y a des règles qui se chevauchent ?
Les règles relèvent de deux rangs différents :
- Rang 1 : occurrence quotidienne (ouvré/non ouvré) et occurrence de congés.
- Rang 0 : récurrence hebdomadaire (ouvré/non ouvré).
Règles de chevauchement V2
- Les règles de rang 1 ont une priorité plus élevée que les règles de rang 0. Ainsi, s’il y a deux règles (une de chaque rang) pour le même jour, l’occurrence quotidienne ou l’occurrence de congé a la priorité sur la récurrence hebdomadaire.
- Lorsqu’il existe plusieurs règles de rang 0 dans la même période :
- Si les heures ne se croisent pas, elles resteront toutes les deux sur le calendrier.
- Si des heures se chevauchent, la règle la plus récemment créée/modifiée est celle qui est prise en compte pour le calendrier de la ressource. Toutes les autres règles d’intersection dans la période sont supprimées. Si certaines règles de rang 0 ont des intersections à certaines dates, mais pas à d’autres, la règle est intercalée pour conserver les sections non sécantes, tandis que les parties sécantes sont supprimées.
Exemples de comportement du calendrier V2 :
Exemple 1 – Heures de travail répétées : dates qui se chevauchent sans jours/heures qui se chevauchent
Pour une période donnée, un technicien travaille le matin, l’après-midi ou la nuit sur des jours différents.
Créez une première règle de calendrier récurrente pour une plage de dates donnée. Par exemple: Répéter lundi, mardi ; 1.1-4.1 ; 8 h à 17 h ET.
Créez une deuxième règle de calendrier répétitif pour une plage de dates qui se croise, tout en vous assurant que les heures de travail ne se croisent pas avec les jours ou les heures précédents. Par exemple : Répéter mer, jeu ; 1.1-4.1 ; 8 h à 17 h ET ou Répéter lundi, mardi ; 1.1-4.1 ; 17h-20h ET.
Résultat : les deux règles de calendrier restent et coexistent l’une à côté de l’autre.
Exemple 2 - Heures de travail répétées : certaines dates se chevauchent, avec tous les jours qui se chevauchent et la deuxième règle commence/se termine avant ou après la première règle
Un technicien obtient un nouvel horaire de travail, qui remplace quelques semaines de son ancien horaire. Par contrat, ils travaillent toujours les mêmes jours chaque semaine.
Créez une première règle de calendrier récurrente pour une plage de dates donnée. Par exemple : Répéter lundi, mardi ; 2.1-4.1 ; 8 h à 17 h ET.
Créez une deuxième règle de calendrier répétitif pour une plage de dates qui se chevauchent, où tous les jours ont des heures de travail qui se chevauchent. Choisissez des dates de début/fin pour cette nouvelle règle qui sont antérieures ou postérieures à la date de début/fin de la première règle. Par exemple : Répéter lundi, mardi ; 3.1-5.1 ; 13 h à 20 h ET.
Résultat : la première règle est tronquée pour tenir compte de la date de début/fin de la deuxième règle. Par exemple : Répéter Lun, Mar ; 2.1-2.28 ; 8 h à 17 h ET ET Répéter lundi, mardi ; 3.1-5.1 ; 13h-20h ET.
Exemple 3 – Heures de travail répétées : toutes les dates qui se chevauchent, avec des jours/heures qui se chevauchent
Le technicien est un contractuel pour une durée déterminée de 2 mois. Il a accepté de faire du travail supplémentaire certains jours. Il souhaite décaler les heures de travail du mardi à une heure antérieure/tardive.
Créez certaines règles de calendrier récurrente pour une plage de dates donnée. Par exemple : Répéter Lun, Mar ; 2.1-4.1 ; 8 h à 12 h ET ET Répéter Mar, Mer ; 2.1-4.1 ; 13h-17h ET.
Créez une nouvelle règle de calendrier récurrente pour la même plage de dates. Choisissez des jours/heures qui chevauchent partiellement les règles d’origine. Par exemple : Répéter Mar, Jeu ; 2.1-4.1 ; 10h-14h ET.
Résultat : la nouvelle règle écrase l’ancienne en cas de chevauchement et laisse les autres inchangées. Par exemple : Répéter lundi ; 2.1-4.1 ; 8 h 00 - 12 h ET ET Répéter mer ; 2.1-4.1 ; 13h-17h ET ET Répéter mar, jeu ; 2.1-4.1 ; 10h-14h ET.
Exemple 4 - Heures de travail répétées : nouvelles dates de règle contenues dans l’ancienne règle, certains jours/heures se chevauchant
Un technicien travaille de 8h à 17h, du lundi au vendredi chaque semaine. Pendant seulement deux semaines, il s’occupera d’un projet d’urgence spécial tous les lundis et mercredis avec des heures de travail différentes de 6h à 18h.
Créez une première règle de calendrier récurrente pour une plage de dates donnée. Par exemple : Répéter Lun, Mar,Mer,Jeu,Ven ; 1.1-Pas de date de fin ; de 8h à 17h ET.
Créez une deuxième règle de calendrier répétitive contenue dans la plage de dates ci-dessus, choisissez les heures de travail qui se chevauchent certains jours. Par exemple : Répéter lundi, mardi, mer ; 5.1-5.14 ; 6 h à 18 h ET.
Résultat : le calendrier doit comporter quatre règles répétitives à la fin de cet exercice :
- tronquer la première règle à la date de début de la deuxième règle
- la deuxième règle de calendrier
- créer une nouvelle règle similaire à la première règle, mais avec les dates de la deuxième règle pour les jours qui ne se chevauchent pas
- tronquer la première règle pour commencer à partir de la date de fin de la seconde règle, sans date de fin
Par exemple : Répéter Lun, Mar,Mer,Jeu,Ven ; 1.1–4.30 ; 8 h 00 - 17 h ET ET Répéter lun, mar,mer ; 5.1-5.14 ; 6h-18h ET ET Répéter jeu, ven, 5.1-5.14 ; 8 h 00 - 17 h ET ET Répéter lun, mar,mer,jeu,ven ; 5.15–Pas de date de fin ; 8 h à 17 h ET
Exemple 5 - Heures de travail non répétitives (occurrence, règle de rang 1)
Un technicien dispose d’un certain nombre de journées de cohésion d’équipe, qui prévalent sur toutes les autres instances d’heures de travail de la journée.
Créez une règle de calendrier récurrente pour une plage de dates donnée. Par exemple : Répéter Lun, Mar,Mer,Jeu,Ven ; 1.1-Pas de date de fin ; de 8h à 17h ET.
Créez une règle de calendrier non répétitive contenue dans la plage de dates ci-dessus. Choisissez des heures de travail qui se chevauchent certains jours. Par exemple : Non-répétition ; 6.21 ; 7 h à 13 h ET.
Résultat : le calendrier doit comporter 1 règle non-répétitive (occurrence) à la fin de l’exercice. La règle non-répétitive remplace l’événement de répétition qui se chevauche pour toute la journée. Par exemple : Répéter Lun, Mar,Mer,Jeu,Ven ; 1.1-Pas de date de fin sauf 6.21 ; non répétitive ; 6.21 ; 7 h à 13 h ET.
Règles de chevauchement V1
- Les règles de rang 1 ont une priorité plus élevée que les règles de rang 0. Ainsi, s’il y avait deux règles (une de chaque rang) pour le même jour, l’occurrence quotidienne ou l’occurrence de congé a la priorité sur la récurrence hebdomadaire.
- S’il y a deux règles de même rang, la règle la plus récemment créée/modifiée sera celle qui est prise en compte pour le calendrier de la ressource.
- Gardez à l’esprit que les occurrences « toute la journée » sont de rang 1 ; vous pouvez donc envisager de la changer en une récurrence hebdomadaire afin de pouvoir ajouter des heures de travail d’occurrence et les faire respecter.
- Lorsqu’une heure de travail existe et qu’une occurrence de congé est créée la chevauchant, les règles se fractionnent de manière à garantir le respect des congés, et tout temps restant en tant qu’heures de travail restera tel quel. Par exemple, s’il y a des heures de travail de 8 h à 17 h le 21 septembre et qu’une occurrence de congé est ajoutée de 15 h à 19 h le 21 septembre, cela sera résolu comme des heures de travail de 8 h à 15 h et un congé de 15 h à 19 h. Cependant, si les règles ont été créées dans l’ordre inverse (le congé créé en premier, puis les heures de travail), quelles que soient les plages horaires, seule l’heure de travail sera resélectionnée. Le congé sera annulé.
Codes de fuseau horaire
Enum | Fuseau horaire |
---|---|
0 | (GMT-12:00) Ligne de date internationale (Ouest) |
1 | (GMT+13:00) Samoa |
2 | (GMT-10:00) Hawaii |
3 | (GMT-09:00) Alaska |
4 | (GMT-08:00) Pacifique (É.-U. et Canada) |
5 | (GMT-08:00) Basse Californie |
6 | (GMT-11:00) Temps coordonné universel-11 |
7 | (GMT-10:00) Îles Aléoutiennes |
8 | (GMT-09:30) Marquises, Îles Marquises |
9 | (GMT-09:00) Temps universel coordonné-09 |
10 | (GMT-07:00) Montagnes Rocheuses (É.-U. et Canada) |
11 | (GMT-08:00) Temps universel coordonné-08 |
12 | (GMT-07:00) Chihuahua, La Paz, Mazatlan |
15 | (GMT-07:00) Arizona |
20 | (GMT-06:00) Centre (É.-U. et Canada) |
25 | (GMT-06:00) Saskatchewan |
29 | (GMT-06:00) Guadalajara, Mexico City, Monterrey |
33 | (GMT-06:00) Amérique centrale |
34 | (GMT-06:00) Île de Pâques |
35 | (GMT-05:00) Est (É.-U. et Canada) |
40 | (GMT-05:00) Indiana (Est) |
43 | (GMT-05:00) Haïti |
44 | (GMT-05:00) Havane (La) |
45 | (GMT-05:00) Bogota, Lima, Quito, Rio Branco |
47 | (GMT-04:00) Caracas |
50 | (GMT-04:00) Heure Atlantique (Canada) |
51 | (GMT-05:00) Îles Turques-et-Caïques |
55 | (GMT-04:00) Georgetown, La Paz, San Juan |
56 | (GMT-04:00) Santiago |
58 | (GMT-04:00) Cuiaba |
59 | (GMT-04:00) Asunción |
60 | (GMT-03:30) Terre-Neuve |
65 | (GMT-03:00) Brasilia |
69 | (GMT-03:00) Buenos Aires |
70 | (GMT-03:00) Cayenne, Fortaleza |
71 | (GMT-03:00) Salvador |
72 | (GMT-03:00) Saint-Pierre-et-Miquelon |
73 | (GMT-03:00) Groenland |
74 | (GMT-03:00) Montevideo |
75 | (GMT-02:00) Centre-Atlantique |
76 | (GMT-02:00) Temps universel coordonné-02 |
77 | (GMT-03:00) Araguaína |
80 | (GMT-01:00) Les Açores |
83 | (GMT-01:00) Îles de Cabo Verde |
84 | (GMT+01:00) Casablanca |
85 | (GMT+00:00) Dublin, Édimbourg, Lisbonne, Londres |
90 | (GMT+00:00) Monrovia, Reykjavik |
92 | (GMT) Temps universel coordonné |
95 | (GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague |
100 | (GMT+01:00) Sarajevo, Skoplje, Varsovie, Zagreb |
105 | (GMT+01:00) Bruxelles, Copenhague, Madrid, Paris |
110 | (GMT+01:00) Amsterdam, Berlin, Berne, Rome, Stockholm, Vienne |
113 | (GMT+01:00) Afrique centrale - Ouest |
115 | (GMT+02:00) Chisinau |
120 | (GMT+02:00) Le Caire |
125 | (GMT+02:00) Helsinki, Kiev, Riga, Sofia, Tallinn, Vilnius |
129 | (GMT+02:00) Amman |
130 | (GMT+02:00) Athènes, Bucarest |
131 | (GMT+02:00) Beyrouth |
133 | (GMT+02:00) Damas |
134 | (GMT+03:00) Istanbul |
135 | (GMT+02:00) Jérusalem |
140 | (GMT+02:00) Harare, Pretoria |
141 | (GMT+02:00) Windhoek |
142 | (GMT+02:00) Gaza, Hébron |
145 | (GMT+03:00) Moscou, Saint-Pétersbourg |
150 | (GMT+03:00) Koweït, Riyad |
151 | (GMT+03:00) Minsk |
155 | (GMT+03:00) Nairobi |
158 | (GMT+03:00) Bagdad |
159 | (GMT+02:00) Kaliningrad |
160 | (GMT+03:30) Téhéran |
165 | (GMT+04:00) Abu Dhabi, Muscat |
169 | (GMT+04:00) Bakou |
170 | (GMT+04:00) Erevan |
172 | (GMT+04:00) Port Louis |
173 | (GMT+04:00) Tbilissi |
174 | (GMT+04:00) Izhevsk, Samara |
175 | (GMT+04:30) Kaboul |
176 | (GMT+04:00) Astrakhan, Oulianovsk |
180 | (GMT+05:00) Iekaterinbourg |
184 | (GMT+05:00) Islamabad, Karachi |
185 | (GMT + 05:00) Toshkent |
190 | (GMT+05:30) Kolkhata (Calcuta), Chennai, Mumbai, New Delhi |
193 | (GMT+05:45) Katmandou |
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) Novosibirsk |
203 | (GMT+06:30) Yangon (Rangoon) |
205 | (GMT+07:00) Bangkok, Hanoi, Djakarta |
207 | (GMT+07:00) Krasnoïarsk |
208 | (GMT+07:00) Barnaoul, Gorno-Altaïsk |
209 | (GMT+07:00) Hovd |
210 | (GMT+08:00) Beijing, Chongqing, Hong Kong R.A.S., Urumqi |
211 | (GMT+07:00) Tomsk |
215 | (GMT+08:00) Kuala Lumpur, Singapour |
220 | (GMT+08:00) Taipei |
225 | (GMT+08:00) Perth |
227 | (GMT+08:00) Irkoutsk |
228 | (GMT+08:00) Oulan-Bator |
229 | (GMT+09:00) Pyongyang |
230 | (GMT+09:00) Séoul |
231 | (GMT+08:45) Eucla |
235 | (GMT+09:00) Osaka, Sapporo, Tokyo |
240 | (GMT+09:00) Yakoutsk |
241 | (GMT+09:00) Chita |
245 | (GMT+09:30) Darwin |
250 | (GMT+09:30) Adélaïde |
255 | (GMT+10:00) Canberra, Melbourne, Sydney |
260 | (GMT+10:00) Brisbane |
265 | (GMT+10:00) Hobart |
270 | (GMT+10:00) Vladivostok |
274 | (GMT+10:30) Île Lord Howe |
275 | (GMT+10:00) Guam, Port Moresby |
276 | (GMT+11:00) Île Bougainville |
277 | (GMT+11:00) Île Norfolk |
278 | (GMT+11:00) Sakhaline |
279 | (GMT+11:00) Chokurdakh |
280 | (GMT+11:00) Îles Salomon, Nouvelle-Calédonie |
281 | (GMT+11:00) Magadan |
284 | (GMT+12:00) Temps universel coordonné+12 |
285 | (GMT+12:00) Îles Fidji |
290 | (GMT+12:00) Auckland, Wellington |
295 | (GMT+12:00) Anadyr, Petropavlovsk-Kamtchatski |
299 | (GMT+12:45) Îles Chatham |
300 | (GMT+13:00) Nuku’alofa |
301 | (GMT-05:00) Chetumal |
302 | (UTC+02:00) Khartoum |
303 | (GMT-03:00) Punta Arenas |
304 | (GMT + 04:00) Volgograd |
305 | (GMT-07:00) Yukon |