Partager via


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 :
  • (1) Ajout d’un jour à la périodicité
  • (2) Suppression d’un jour de la périodicité
  • (3) Modification uniquement des dates ou heures de début ou de fin, ou modification de la capacité
  • (4) Modification d’autre chose que les touches mentionnées en (3)

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 :
  • S’il s’agit d’un événement qui dure toute la journée. Dans ce cas, la partie date doit refléter la date de fin de l’occurrence de toute la journée.
  • L’occurrence se termine à la fin de la journée, c’est-à-dire à minuit le jour suivant. Dans ce cas, la date doit être \"2021-05-16T00:00:00.000Z\". Pour spécifier la date de fin de la périodicité, modifiez l’attribut RecurrenceEndDate.
WorkHourType Integer Oui Cette clé contient un numéro correspondant à l’une des options suivantes :
  • (0) Travaillée
  • (1) Pause
  • (2) Chômée
  • (3) Absence
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.

  1. Ouvrez le navigateur et l’organisation à laquelle vous devez apporter ces modifications de calendrier.
  2. Ouvrez les outils de développement (sélectionnez Ctrl+Shift+I in Microsoft Edge, sélectionnez F12 dans Google Chrome).
  3. 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));
       }
  1. 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 : 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.

  1. 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.

  2. 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.

  1. 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.

  2. 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.

  1. 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.

  2. 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.

  1. 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.

  2. 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.

  1. 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.

  2. 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