Partilhar via


Editar calendários de horário de trabalho utilizando APIs

Frequentemente, as organizações precisam de criar, editar ou eliminar programaticamente horários de trabalho nos calendários dos seus recursos. Os calendários mostram horários de trabalho, folgas e pausas que determinam a disponibilidade de um recurso quando o trabalho está a ser agendado. Esses recursos têm de ser agendados em fusos horários específicos, podem ou não observar encerramentos de empresas e podem ter capacidade variável. Para obter informações sobre a definição de horários de trabalho na aplicação Field Service, aceda a Adicionar horário de trabalho a um recurso reservável.

Além de utilizar a aplicação Field Service, pode utilizar as seguintes APIs para modificar as regras de calendário para tipos de registo selecionados:

  • A API Save Calendar (msdyn_SaveCalendar) cria ou atualiza registos de calendário numa entidade selecionada, com base nas entradas passadas como o pedido.
  • A API Delete Calendar (msdyn_DeleteCalendar) elimina todas as regras do calendário internas de um calendário numa entidade selecionada, com base nas entradas aprovadas como o pedido.
  • A API de Guardar/Eliminar Calendário V2 (msdyn_SaveCalendar/msdyn_DeleteCalendar, passar sinalizador UseV2) permite periodicidade de várias horas de trabalho em simultâneo alterando a lógica para regras de sobreposição. Para mais informações, consulte O que acontece se houver regras em sobreposição?.

Este artigo contém detalhes sobre a entrada (pedido) e saída (resposta) de cada API e respetiva utilização, com exemplos.

Pré-requisitos

  • Versão 9.2.21055 ou superior da plataforma com a versão 3.12.45.7 do Universal Resource Scheduling.
  • Utilização de um dos seguintes tipos de registo:
    • Recurso reservável (bookableresource)
    • Requisito de recurso (msdyn_resourcerequirement)
    • Modelo de horas de trabalho (msdyn_workhourtemplate)
    • Projeto (msdyn_project)

Tipos de evento de calendário

Quando cria um calendário, define quantas vezes um tipo de horário de trabalho ocorre: uma vez, todos os dias, todas as semanas ou todos os dias, ou pode criar uma periodicidade personalizada. Para mais informações sobre estes eventos de calendário, aceda aos exemplos mais à frente neste artigo.

Ocorrência

Quando um tipo de horário de trabalho ocorre apenas uma vez no calendário da entidade, é chamado de ocorrência.

Por exemplo, considere um recurso que trabalhe das 05:00 às 10:00 do dia 26 de maio de 2021. Estas APIs só suportam este tipo de ocorrência, que começa e termina no mesmo dia. Por outro exemplo, considere um recurso que trabalhe de 26 de maio de 2021 às 20:00 até às 10:00 do dia 27 de maio de 2021. Não é possível criar esta ocorrência utilizando apenas uma chamada da API msdyn_SaveCalendar; em vez disso, terá de fazer duas chamadas.

Ocorrência de todo o dia

Quando ocorre um tipo de horário de trabalho durante um ou mais dias inteiros, a partir da meia-noite (00:00) da data de início, é uma ocorrência de todo o dia. A duração máxima para uma ocorrência de todo o dia é de cinco anos.

Por exemplo, um recurso trabalha durante todo o dia de 26 de maio de 2021 até ao final do dia 30 de maio de 2021. Esta é uma ocorrência de todo o dia que dura cinco dias.

Periodicidade semanal

Quando um tipo de horário de trabalho ocorre ao mesmo tempo em dias selecionados de cada semana, chama-se periodicidade semanal.

Por exemplo, um recurso funciona das 05:00 às 10:00 todas as segundas, terças e quartas-feiras.

Periodicidade diária

Quando um tipo de horário de trabalho ocorre ao mesmo tempo todos os dias, chama-se periodicidade diária.

Por exemplo, um recurso funciona das 05:00 às 10:00 todos os dias da semana.

Periodicidade personalizada

Quando um tipo de horário de trabalho ocorre em determinadas horas em determinados dias da semana, mas as horas são diferentes em dias diferentes, pode criar uma periodicidade personalizada.

Por exemplo, um recurso trabalha das 05:00 às 10:00 todas as segundas-feiras e das 12:00 às 15:00 todas as quartas-feiras.

Tipos de horário de trabalho

Estas APIs suportam a criação, atualização e eliminação de operações para os seguintes tipos de horário de trabalho:

Horas de trabalho

O horário de trabalho é o horário durante o qual uma entidade está disponível para realizar trabalhos.

Utilizando estas APIs, pode fazer o seguinte:

  • Criar, editar ou eliminar uma ocorrência de horário de trabalho.
  • Criar, editar ou eliminar uma ocorrência diária de horário de trabalho.
  • Criar, editar ou eliminar uma periodicidade semanal de horário de trabalho.
  • Criar, editar ou eliminar uma ocorrência personalizada de horário de trabalho.
  • Criar, editar ou eliminar uma ocorrência de todo o dia de horários de trabalho.
  • Capacidade para criar ou editar em horários de trabalho.
  • Editar uma única ocorrência de horário de trabalho numa periodicidade.
  • Edite Esta e ocorrências seguintes numa periodicidade.
  • Altere uma ocorrência de horário de trabalho para uma periodicidade.
  • Altere o fuso horário da regra de calendário.

Utilizando esta API, não pode fazer o seguinte:

  • Eliminar uma única ocorrência de horário de trabalho de uma periodicidade.
  • Criar uma ocorrência que se estende por 24 horas, mas não começa e termina à meia-noite (00h00).
  • Criar, editar ou eliminar uma periodicidade de todo o dia.

Horário de descanso

Estes são horas durante as quais a entidade não está disponível para trabalhar devido a uma razão não especificada.

Utilizando estas APIs, pode fazer o seguinte:

  • Crie ou edite horários de descanso durante todo o dia.
  • Crie ou edite uma ocorrência de horário de descanso.
  • Altere o fuso horário da regra de calendário.

Utilizando estas APIs, não pode fazer o seguinte:

  • Crie ou edite uma periodicidade de horário de descanso.

Pausa

Este são horas num dia de trabalho durante as quais uma entidade está a de pausa e não está disponível para trabalhar. As pausas não podem existir sem o horário de trabalho; têm de ocorrer entre duas horas de trabalho por dia. As pausas não se sobrepõem ao horário de trabalho.

Utilizando estas APIs, pode fazer o seguinte:

  • Criar ou editar pausas durante horários de trabalho.

Utilizando estas APIs, não pode fazer o seguinte:

  • Eliminar apenas pausas de uma ocorrência ou periodicidade de horários de trabalho.

Licença

Estes são horas durante as quais uma entidade não está disponível para trabalhar devido a férias. A razão para uma folga pode ser especificada.

Utilizando estas APIs, pode fazer o seguinte:

  • Criar ou editar horas com uma etiqueta.
  • Altere o fuso horário da regra de calendário.

Utilizando estas APIs, não pode fazer o seguinte:

  • Criar ou editar uma periodicidade de hora de folga.

Encerramento de empresa

Pode criar entidades de encerramento de empresa que definam as horas em que a empresa está encerrada. Utilizando a API msdyn_SaveCalendar, pode definir todas as entidades para observar ou ignorar as horas de encerramento de empresa da organização utilizando a chave ObserveClosure opcional. Quando estiverem prontas para observar estes encerramentos, as entidades estarão indisponíveis para trabalhar.

API Save Calendar

Entrada

O pedido contém apenas um atributo, CalendarEventInfo, que é um tipo de Cadeia. Contém vários outros atributos que estão todos incorporados nesta cadeia.

Nota

Na tabela seguinte, Tipo representa o formato esperado para fazer um pedido bem sucedido. No entanto, todo o pedido é analisado como uma única cadeia.

CalendarEventInfo

Nome Tipo Necessário Descrição
EntityLogicalName String Sim Esta chave descreve a entidade a partir da qual a API está a ser chamada. O calendário desta entidade deve ser criado ou editado.
CalendarId GUID Sim Esta chave contém o ID do calendário relacionado com a entidade acima descrita. Quando qualquer uma destas entidades é criada, um registo de calendário também é automaticamente criado. Estas APIs editam esse registo de calendário adicionando regras ou editando as regras existentes.
RulesAndRecurrences RulesAndRecurrences Sim Esta chave é uma matriz e cada elemento contém múltiplos atributos listados na tabela na secção seguinte. O tamanho da matriz deve ser pelo menos um.
IsVaried Boolean No Esta chave deve ser definida como true para cenários de periodicidade personalizados.
IsEdit Boolean No Esta chave deve ser definida como true para editar regras existentes.
TimeZoneCode Número inteiro No Esta chave assume um valor inteiro correspondente ao fuso horário das regras do calendário. Para o mapeamento, aceda a Códigos de fuso horário, mais à frente neste artigo. O valor predefinido é o fuso horário do utilizador.
InnerCalendarDescription String No Esta chave só é necessária se a regra do calendário for folgas. Deve conter a razão para a folga.
ObserveClosure Boolean No Esta chave é específica de periodicidades. Se estiver definida como true, a entidade observa o encerramento da empresa.
RecurrenceEndDate DateTime No Esta chave é específica de periodicidades. Contém a data final da periodicidade. Se a data de tempo for 08:00:00 ou mais cedo, a data de fim da periodicidade é um dia antes da data especificada. Se a hora marcada for 08:00:01 ou mais tarde, a data é respeitada como está. O valor predefinido para ocorrências é nulo. O valor predefinido para recorrências é 30 dez 9999, 23:59:59 horas, UTC.
RecurrenceSplit Boolean No Esta chave é específica de periodicidades. Está definido como true para editar "Esta e as ocorrências seguintes" de uma recorrência.
ResourceId GUID No Esta chave contém o SystemUserId ou ResourceId e só deve ser passada quando a entidade associada a esta chamada é um recurso reservável do tipo SystemUser. Isto é necessário para verificar se existem privilégios OwnCalendar no separador Gestão de Serviços.
UseV2 Sinalizador No A passagem deste sinalizador ativa a versão V2 do calendário de horário de trabalho, com uma lógica de regras em sobreposição melhorada que permite várias periodicidades. Para mais informações, consulte O que acontece se houver regras em sobreposição?.

RulesAndRecurrences

Name Type Obrigatório Descrição
Regras Regras Sim Esta chave é uma matriz e cada elemento contém múltiplos atributos listados na tabela na secção seguinte. O tamanho da matriz deve ser pelo menos um.
RecurrencePattern String No Esta chave é específica de periodicidades. Atualmente, apenas suportamos este padrão: FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA. BYDAY pode ser alterado para incluir menos dias; no entanto, FREQ e INTERVAL não podem ser alterados.
InnerCalendarId GUID No Esta chave é específica para edição. Se uma regra está a ser editada, o InnerCalendarId precisa de ser passado aqui. Se um InnerCalendarId não for passado, a API cria uma nova regra, mesmo que a chave IsEdit esteja definida como true.
Ação Número inteiro No Esta chave é específica de periodicidades personalizadas. Se uma periodicidade personalizada estiver a ser criada ou editada, um dos seguintes números deve ser introduzido:
  • (1) Adicionar um dia à periodicidade
  • (2) Eliminar um dia da periodicidade
  • (3) Editar apenas as datas ou horas de início ou de fim, ou a capacidade de edição
  • (4) Editar qualquer outra coisa que não as chaves mencionadas no (3)

Regras

Nome Tipo Necessário Descrição
StartTime DateTime Sim Esta chave contém uma entrada datetime no formato ISO. Por exemplo, \"2021-05-15T12:00:00.000Z\". A porção de tempo determina a hora de início da hora de trabalho no fuso horário especificado anteriormente. A porção de data determina a data de início da hora de trabalho. Aqui, 15 de maio de 2021 é a data da ocorrência ou a data de início da periodicidade. Se o padrão for BYDAY=TU,WE, mas 15 de maio (um sábado) é a data, a API criará ou editará automaticamente regras para todas as terças e quartas-feiras depois de 15 de maio. Este é o caso em que a regra não tem de ter a data correspondente ao dia.
EndTime DateTime Sim Esta contém uma entrada datetime no formato ISO. Por exemplo, \"2021-05-15T12:00:00.000Z\". A porção de tempo determina a hora de fim da hora de trabalho no fuso horário especificado anteriormente. A porção de data tem de conter a mesma data que a porção de data de StartTime. As únicas exceções são:
  • Se for uma ocorrência de todo o dia. Neste caso, a parte da data deve refletir a data de fim da ocorrência de todo o dia.
  • A ocorrência termina ao final do dia, ou seja, às 00h00 do dia seguinte. Neste caso, a data deve ser \"2021-05-16T00:00:00.000Z\". Para especificar a data de fim da periodicidade, modifique o atributo RecurrenceEndDate.
WorkHourType Número inteiro Sim Esta chave contém um número correspondente a uma das seguintes opções:
  • (0) Trabalho
  • (1) Pausa
  • (2) Descanso
  • (3) Licença
Esforço Número inteiro No Esta chave determina a capacidade da entidade. Tem de ser um número inteiro. O valor predefinido é 1.

Saída

Esta API POST cria ou modifica registos de regra de calendário para a entidade selecionada. Também dá a seguinte saída.

Nome Tipo Descrição
InnerCalendarIds String Uma matriz de GUIDs InnerCalendarIds que são resultado da operação POST.

API Delete Calendar

Entrada

Nome Tipo Necessário Descrição
EntityLogicalName String Sim Este campo descreve a entidade cujas regras de calendário devem ser eliminadas.
InnerCalendarId GUID Sim Este campo descreve o ID do InnerCalendarId que precisa de ser eliminado. Se houver vários InnerCalendarIds associados a uma única regra, qualquer ID é suficiente aqui. Mais informações sobre calendários internos e externos: Entidades de calendário
CalendarId GUID Sim Este campo descreve o CalendarId da entidade.
IsVaried Boolean No Este campo é específico para periodicidades e é definido como yes se uma regra de periodicidade personalizada está a ser eliminada.
UseV2 Sinalizador No A passagem deste sinalizador ativa a versão V2 do calendário de horário de trabalho, com uma lógica de regras em sobreposição melhorada que permite várias periodicidades. Para mais informações, consulte O que acontece se houver regras em sobreposição?.

Saída

Esta API POST elimina registos de regra de calendário para a entidade selecionada. Adicionalmente, dá a seguinte saída.

Nome Tipo Descrição
InnerCalendarIds String Uma matriz de GUIDs InnerCalendarIds que são resultado da operação POST.

Carregar API do calendário

Entrada

Nome: msdyn_LoadCalendars
Tipo: Ação
Descrição: Obtém calendários para o LoadCalendarsInput dado.

Nome: msdyn_LoadCalendars.LoadCalendarsInput
Tipo: Parâmetro
Descrição: Cadeia no seguinte formato JSON:

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

Nome: msdyn_LoadCalendarsResponse
Tipo: ComplexType
Descrição: Contém a resposta da ação msdyn_loadCalendars.

Nome: msdyn_LoadCalendarsResponse.CalendarEvents
Tipo: Propriedade
Descrição: Cadeia no seguinte formato JSON:

{
"calendarId": CalendarEventSlot[]
}

Onde calendarId é um GUID adequado que representa o GUID do Calendário e CalendarEventSlot é um objeto do seguinte formato:

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

Como chamar as APIs

Estas APIs podem ser chamadas utilizando o browser.

  1. Abra o browser e a organização nos quais precisa de fazer estas alterações de calendário.
  2. Abra as Ferramentas de Programação (selecione Ctrl+Shift+I no Microsoft Edge, selecione F12 no Google Chrome).
  3. Na consola, introduza a seguinte função, depois de substituir [nome-org] por detalhes da organização (por exemplo, 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. Depois de definida esta função, pode chamá-la para criar, editar ou eliminar calendários utilizando as APIs. Introduza a chamada seguinte para guardar um calendário:
       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
                   }]
               }]
           }"
       })

Introduza a chamada seguinte para eliminar um calendário:

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

Consulte a secção seguinte para ver exemplos de como fazer diferentes chamadas com base nas suas necessidades. Substitua a action da chamada de função no passo 3 por msdyn_SaveCalendar ou msdyn_DeleteCalendar e substitua data pela CalendarEventInfo relevante.

Veja também a captura de ecrã seguinte para uma chamada do Power Automate para a ação msdyn_SaveCalendar: Chamada do Power Automate a ação msdyn_SaveCalendar.

Cenários de exemplo para utilização da API

Vamos percorrer alguns cenários para os quais pode usar estas APIs.

O Bob e o Tim são camionistas da Contoso Enterprises em Bellevue, Washington. A sua despachante, Debbie, é responsável por fazer alterações nos seus calendários de horários de trabalho. A Debbie faz estas alterações usando as APIs msdyn_SaveCalendar e msdyn_DeleteCalendar.

Criar uma ocorrência de horário de trabalho.

O Bob está agendado para entregar pacotes das 09:00 às 17:00 no dia 15 de maio de 2021. A Debbie usa a API msdyn_SaveCalendar.

Pedido

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

Editar uma ocorrência de horário de trabalho.

A agenda de Bob muda então para começar às 10:00 do dia 15 de maio de 2021. A Debbie usa a API msdyn_SaveCalendar.

Pedido

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

Eliminar uma ocorrência de horário de trabalho.

Surge uma emergência familiar e o Bob precisa de cancelar um dia inteiro de trabalho. A Debbie usa a API msdyn_DeleteCalendar.

Pedir

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

Resposta

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

Criar uma periodicidade diária de horário de trabalho

A partir de 20 de maio de 2021, o Bob decide trabalhar com a Contoso toda a semana, das 8:00 às 17:00, e vai deixar de trabalhar aí no dia 15 de julho de 2021.

Pedir

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

Resposta

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

Editar uma periodicidade diária de horário de trabalho com capacidade aumentada

O Bob decide parar de trabalhar durante toda a semana de 15 de junho de 2021 para fazer uma pausa. Até lá, o Bob continuará o horário de toda a semana, como acordado anteriormente. A Debbie faz estas alterações usando a API msdyn_SaveCalendar.

Pedido

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

Criar uma periodicidade semanal de horário de trabalho

A partir de 16 de junho de 2021, o Bob trabalhará das 8:00 às 17:00 às quartas e às sextas-feiras e fará uma pausa das 12:00 às 12:30 para almoço. A Debbie utiliza a API msdyn_SaveCalendar, mas comete um erro e marca a pausa das 12:00 às 13:00.

Pedir

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

Resposta

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

Editar uma pausa de uma periodicidade semanal horário de trabalho

A Debbie corrige então o erro e altera a pausa para ocorrer das 12:00 às 12:30 utilizando a API msdyn_SaveCalendar.

Pedido

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

Criar uma periodicidade personalizada de horário de trabalho

O Tim trabalha para a Contoso às segundas-feiras das 8:00 às 17:00 e às quartas-feiras das 11:00 às 15:00. O Tim começou a trabalhar para a Contoso a 16 de maio de 2021. A Debbie usa a API msdyn_SaveCalendar para criar o horário de trabalho do Tim.

Pedido

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

Editar uma periodicidade personalizada de horário de trabalho

A agenda do Tim muda para o horário de trabalho das quartas-feira das 17:00 às 20:00 e quintas-feira das 10:00 às 12:00. Segunda-feira é removida da agenda do Tim. A Debbie usa a API msdyn_SaveCalendar para o fazer.

Pedir

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

Resposta

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

Editar uma ocorrência de horário de trabalho numa periodicidade

No dia 26 de maio de 2021, o Tim só pode trabalhar das 13:00 às 19:00. A Debbie usa a API msdyn_SaveCalendar aqui.

Pedir

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

Resposta

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

Eliminar uma periodicidade personalizada de horário de trabalho

O Tim decidiu deixar a empresa e tem de eliminar toda a sua agenda. A Debbie usa a API msdyn_DeleteCalendar aqui.

Pedir

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

Resposta

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

Criar licença

O Tim vai tirar três dias de férias em família a partir de 9 de junho de 2021.

Pedido

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

Criar horários de trabalho de todo o dia

O Tim tem um turno de 72 horas a partir de 20 de maio de 2021. A Debbie usa a API msdyn_SaveCalendar para criar o horário de trabalho do Tim.

Pedir

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

Resposta

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

FAQs do

Estou a receber o erro "StartTime não pode ser maior ou igual a EndTime."

Certifique-se de que não existem sobreposições nos intervalos de tempo das diferentes regras do calendário. Verifique as datas para se certificar de que StartTime não é depois de EndTime. Além disso, verifique se as horas seguem o formato 24 horas.

As APIs podem ser utilizadas para atualizar a entidade "Modelos de Horário de Trabalho"?

Sim, pode utilizar esta API para criar e atualizar modelos de horários de trabalho, além de horários de trabalho de recursos.

Estou a receber o erro "Ocorreu um erro ao anular a serialização do objeto do tipo Microsoft.Dynamics.UCICalendar.Plugins.SaveCalendarContract+CalendarEventInfo. A origem de entrada não está formatada corretamente.
or
À espera do estado "Elemento".. Encontrado "Texto" com o nome '', espaço de nomes ''."

Certifique-se de que a cadeia é corretamente analisada. Pode haver parênteses, vírgulas ou pontos e vírgula em falta.

É apresentado o erro, "Padrão de periodicidade inválido. Consulte a documentação para os padrões suportados."

Atualmente, apenas suportamos este padrão: FREQ=DAILY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA. BYDAY pode ser alterado para incluir menos dias; no entanto, FREQ e INTERVAL não podem ser alterados. Certifique-se de que não há espaços no padrão.

Como obtemos informações sobre o CalendarId e o InnerCalendarId do recurso?

O CalendarId pode ser obtido a partir de atributos de recursos. Faça esta chamada para obter estas informações: [org-url]/api/data/v9.1/bookableresources([bookableresourceGUID]).

Um exemplo da chamada anterior seria [org-url]/api/data/v9.1/bookableresources(7bb0224b-6712-ec11-94f9-000d3a6d888e).

O InnerCalendarId pode ser obtido a partir de atributos de calendário. Faça esta chamada para obter estas informações: [org-url]/api/data/v9.1/calendars([calendar-id-from-above-call])?$expand=calendar_calendar_rules.

Um exemplo da chamada anterior é [org-url]/api/data/v9.1/calendars(02481736-1b6a-4d49-9ebd-a5bd041c1c99)?$expand=calendar_calendar_rules.

O que acontece se houver regras sobrepostas?

Há duas classificações diferentes em que as regras se enquadram:

  • Escalão 1 – ocorrência diária (trabalho/não-trabalho) e ocorrência da folga.
  • Escalão 0 – periodicidade semanal (trabalho/não-trabalho).

Regras de sobreposição V2

  • As regras de Escalão 1 têm uma prioridade maior do que as regras de Escalão 0. se houverem duas regras (uma de cada classificação) no mesmo dia, a ocorrência diária ou de folga tem a prioridade sobre a periodicidade semanal.
  • Quando existem várias regras de Classificação 0 no mesmo intervalo de datas:
    • Se as horas não se intersetarem, ambas permanecerão no calendário.
    • Se as horas se intersetarem, a regra que foi criada/modificada mais recentemente é a que é considerada para o calendário do recurso. Todas as outras regras de interseção no intervalo de datas são removidas. Se algumas regras de classificação 0 tiverem interseções em algumas datas, mas não em outras, a regra é unida para reter as secções que não se intersetam, enquanto as partes que se intersetam são removidas.

Exemplos do comportamento do calendário V2:

Exemplo 1 - Horário de trabalho repetido: datas em sobreposição sem dias/horas em sobreposição

Para um determinado intervalo de datas, um técnico trabalha de manhã, tarde ou noite em dias diferentes.

  1. Crie uma primeira regra de calendário que se repita para um determinado intervalo de datas. Por exemplo: Repetir Seg, Ter; 1.1-4.1; 8:00.17:00 ET.

  2. Crie uma segunda regra de calendário que se repita para um intervalo de datas de interseção, assegurando que o horário de trabalho não se intersetam com os dias ou horas anteriores. Por exemplo: Repetir Qua, Qui; 1.1-4.1; 8:00-17:00 ET ou Repetir Seg, Ter; 1.1-4.1; 17:00-20:00 ET.

Resultado: ambas as regras de calendário permanecem e coexistem entre si.

Exemplo 2 - Horário de Trabalho Repetido: algumas datas em sobreposição, com todos os dias em sobreposição e o início/fim da segunda regra antes ou depois da primeira regra

Um técnico obtém uma nova agenda de trabalho, que substitui algumas semanas da agenda antiga. De acordo com o contrato, trabalham sempre nos mesmos dias, todas as semanas.

  1. Crie uma primeira regra de calendário que se repita para um determinado intervalo de datas. Por exemplo: Repetir Seg, Ter; 2.1-4.1; 8:00-17:00 ET.

  2. Crie uma segunda regra de calendário que se repita para um intervalo de datas em sobreposição, em que todos os dias têm horas de trabalho em sobreposição. Escolha datas de início/fim para esta nova regra que sejam anteriores ou após a data de início/fim da primeira regra. Por exemplo: Repetir Seg, Ter; 3.1-5.1; 13:00-20:00 ET.

Resultado: a primeira regra é truncada para acomodar a data de início/fim da segunda regra. Por exemplo: Repetir Seg, Ter; 2.1-2.28; 8:00-17:00 ET E Repetir Seg, Ter; 3.1-5.1; 13:00-20:00 ET.

Exemplo 3 - Horário de Trabalho Repetido: todas as datas em sobreposição com alguns dias/horas em sobreposição

O técnico é um trabalhador a contrato por um período fixo de 2 meses. Concordaram aceitar trabalho adicional em alguns dias. Pretendem mudar o horário de trabalho de terça-feira para uma hora anterior/posterior.

  1. Crie algumas regras de calendário que se repitam para um determinado intervalo de datas. Por exemplo: Repetir Seg, Ter; 2.1-4.1; 8:00-12:00 ET E Repetir Ter, Qua; 2.1-4.1, 13:00-17:00 ET.

  2. Crie uma nova regra de calendário que se repita para o mesmo intervalo de datas. Escolha dias/horas que se sobreponham parcialmente às regras originais. Por exemplo: Repetir Ter, Qui ; 2.1-4.1; 10:00-14:00 ET.

Resultado: a nova regra substitui a antiga onde há sobreposições e deixa as outras inalteradas. Por exemplo: Repetir Seg; 2.1-4.1; 8:00-12:00 ET E Repetir Qua; 2.1-4.1; 13:00-17:00 ET E Repetir Ter,Qui; 2.1-4.1; 10:00-14:00 ET.

Exemplo 4 - Horário de Trabalho Repetido: novas datas da regra contidas na regra antiga, alguns dias/horas em sobreposição

Um técnico trabalha das 8:00 às 17:00, de segunda a sexta-feira, todas as semanas. Só que durante duas semanas, estarão a tratar de um projeto especial para pessoas que têm um horário de trabalho diferente, das 6:00 às 18:00.

  1. Crie uma primeira regra de calendário que se repita para um determinado intervalo de datas. Por exemplo: Repetir Seg,Ter,Qua,Qui,Sex; 1.1-Sem Data de Fim; 8:00-17:00 ET.

  2. Crie uma segunda regra de calendário que se repita contida no intervalo de datas acima, escolha o horário de trabalho que se sobrepõe em alguns dias. Por exemplo: Repetir Seg,Ter,Qua; 5.1-5.14; 6:00-18:00 ET.

Resultado: o calendário deve ter quatro regras de repetição até ao fim deste exercício:

  • truncar a primeira regra para a data de início da segunda regra
  • a segunda regra do calendário
  • criar uma nova regra semelhante à primeira regra, mas com as datas da segunda regra para os dias que não se sobrepõem
  • truncar a primeira regra para começar a partir da data de fim da segunda regra, sem data de fim

Por exemplo: Repetir Seg,Ter,Qua,Qui,Sex; 1.1-4.30; 8:00-17:00 ET E Repetir Seg,Ter,Qua; 5.1-5.14; 6:00-18:00 ET E Repetir Qui,Sex, 5.1-5.14; 8:00-17:00 ET E Repetir Seg,Ter,Qua,Qui,Sex; 5.15–Sem Data de Fim; 8:00-17:00 ET

Exemplo 5 - Horário de trabalho não-repetidas (ocorrência, regra de classificação 1)

Um técnico tem vários dias de coesão da equipa que têm precedência sobre todas as outras instâncias do horário de trabalho para o dia.

  1. Crie uma regra de calendário que se repita para um determinado intervalo de datas. Por exemplo: Repetir Seg,Ter,Qua,Qui,Sex; 1.1-Sem Data de Fim; 8:00-17:00 ET.

  2. Crie uma regra de calendário que não se repita contida no intervalo de datas acima. Escolha o horário de trabalho que se sobrepõe em alguns dias. Por exemplo: Não-repetido; 6.21; 7:00-13:00 ET.

Resultado: o calendário deve ter 1 regra que não se repita (ocorrência) no final do exercício. A regra de não repetição substitui o evento repetido em sobreposição durante todo o dia. Por exemplo: Repetir Seg,Ter,Qua,Qui,Sex; 1.1-Sem Data de Fim exceto 6.21; não repetir; 6.21; 7:00-13:00 ET.

Regras de sobreposição V1

  • As regras de Escalão 1 têm uma prioridade maior do que as regras de Escalão 0. Assim, se houvessem duas regras (uma de cada classificação) no mesmo dia, a ocorrência diária ou de folga tem a prioridade sobre a periodicidade semanal.
  • Se houver duas regras do mesmo escalão, a regra que foi mais recentemente criada/ modificada será a que é considerada para o calendário do recurso.
  • Tenha em mente que as ocorrências de todo o dia são de Escalão 1, por isso pode considerar mudá-las para uma periodicidade semanal de modo a poder adicionar horas de trabalho de ocorrência e fazê-las ser respeitadas.
  • Quando existe uma hora de trabalho e é criada uma folga que se sobrepõe, as regras dividem-se de uma forma a que garanta o respeito das folgas e qualquer tempo que reste, pois o tempo de trabalho permanecerá como está. Por exemplo, se houver horário de trabalho das 8:00 às 17:00 em 21 de setembro e se for adicionada uma ocorrência de folga das 15:00 às 19:00 em 21 de setembro, esta será resolvida como horário de trabalho das 20:00 às 15:00 e o intervalo das 15:00 às 19:00 horas. No entanto, se as regras foram criadas na ordem oposta (folga criada primeiro e depois as horas de trabalho criadas) independentemente dos horários, apenas a hora de trabalho seria selecionada novamente. O tempo de folga seria anulado.

Códigos de fuso horário

Enumerar Fuso horário
0 (GMT-12:00) Oeste da Linha de Data Internacional
1 (GMT+13:00) Samoa
2 (GMT-10:00) Havai
3 (GMT-09:00) Alasca
4 (GMT-08:00) Hora do Pacífico (E.U.A. e Canadá)
5 (GMT-08:00) Baixa Califórnia
6 (GMT-11:00) Hora Universal Coordenada-11
7 (GMT-10:00) Ilhas Aleutas
8 (GMT-09:30) Ilhas Marquesas
9 (GMT-09:00) Hora Universal Coordenada-09
10 (GMT-07:00) Hora das Regiões Montanhosas (E.U.A. e Canadá)
11 (GMT-08:00) Hora Universal Coordenada-08
12 (GMT-07:00) Chihuahua, La Paz, Mazatlan
15 (GMT-07:00) Arizona
20 (GMT-06:00) Hora Central (E.U.A. e Canadá)
25 (GMT-06:00) Saskatchewan
29 (GMT-06:00) Guadalajara, Cidade do México, Monterrey
33 (GMT-06:00) América Central
34 (GMT-06:00) Ilha da Páscoa
35 (GMT-05:00) Hora do Leste (E.U.A. e Canadá)
40 (GMT-05:00) Indiana (Este)
43 (GMT-05:00) Haiti
44 (GMT-05:00) Havana
45 (GMT-05:00) Bogotá, Lima, Quito, Rio Branco
47 (GMT-04:00) Caracas
65 (GMT-04:00) Hora do Atlântico (Canadá)
51 (GMT-05:00) Ilhas Turcas e Caicos
55 (GMT-04:00) Georgetown, La Paz, São João
56 (GMT-04:00) Santiago
58 (GMT-04:00) Cuiaba
59 (GMT-04:00) Assunção
60 (GMT-03:30) Terra Nova
65 (GMT-03:00) Brasília
69 (GMT-03:00) Buenos Aires
70 (GMT-03:00) Caiena, Fortaleza
71 (GMT-03:00) Salvador
72 (GMT-03:00) São Pedro e Miquelão
73 (GMT-03:00) Gronelândia
74 (GMT-03:00) Montevidéu
75 (GMT-02:00) Atlântico Central
76 (GMT-02:00) Hora Universal Coordenada-02
77 (GMT-03:00) Araguaina
80 (GMT-01:00) Açores
83 (GMT-01:00) Ilhas de Cabo Verde
84 (GMT+01:00) Casablanca
85 (GMT+00:00) Dublin, Edimburgo, Lisboa, Londres
90 (GMT+00:00) Monróvia, Reiquiavique
92 (GMT) Hora Universal Coordenada
95 (GMT+01:00) Belgrado, Bratislava, Budapeste, Liubliana, Praga
100 (GMT+01:00) Sarajevo, Skopje, Varsóvia, Zagreb
105 (GMT+01:00) Bruxelas, Copenhaga, Madrid, Paris
110 (GMT+01:00) Amesterdão, Berlim, Berna, Roma, Estocolmo, Viena
113 (GMT+01:00) África Central Ocidental
115 (GMT+02:00) Chisinau
120 (GMT+02:00) Cairo
125 (GMT+02:00) Helsínquia, Kiev, Riga, Sófia, Tallin, Vilnius
129 (GMT+02:00) Amã
130 (GMT+02:00) Atenas, Bucareste
131 (GMT+02:00) Beirute
133 (GMT+02:00) Damasco
134 (GMT+03:00) Istambul
135 (GMT+02:00) Jerusalém
140 (GMT+02:00) Harare, Pretória
141 (GMT+02:00) Windhoek
142 (GMT+02:00) Hebrom
145 (GMT+03:00) Moscovo, S. Petersburgo
235 (GMT+03:00) Koweit, Riade
151 (GMT+03:00) Minsk
155 (GMT+03:00) Nairobi
158 (GMT+03:00) Bagdade
159 (GMT+02:00) Kaliningrado
160 (GMT+03:30) Teerão
165 (GMT+04:00) Abu Dhabi
169 (GMT+04:00) Baku
170 (GMT+04:00) Erevan
172 (GMT+04:00) Port Louis
173 (GMT+04:00) Tbilisi
174 (GMT+04:00) Izhevsk, Samara
175 (GMT+04:30) Cabul
176 (GMT+04:00) Astrakhan, Ulianovsk
180 (GMT+05:00) Ecaterimburgo
184 (GMT+05:00) Islamabade, Karachi
185 (GMT+05:00) Tachkent
185 (GMT+05:30) Chennai, Kolkata (Calcutá), Mumbai, Nova Deli
193 (GMT+05:45) Catmandu
195 (GMT+06:00) Astana
196 (GMT+06:00) Daca
197 (GMT+06:00) Omsk
200 (GMT+05:30) Sri Jayawardenepura
201 (GMT+07:00) Novosibirsk
203 (GMT+06:30) Yangon (Rangum)
205 (GMT+07:00) Banguecoque, Hanói, Jacarta
207 (GMT+07:00) Krasnoyarsk
208 (GMT+07:00) Barnaul, Gorno-Altaysk
209 (GMT+07:00) Hovd
210 (GMT+08:00) Pequim, Chongqing, Hong Kong, Urumqi
211 (GMT+07:00) Tomsk
215 (GMT+08:00) Kuala Lumpur, Singapura
220 (GMT+08:00) Taipé
225 (GMT+08:00) Perth
227 (GMT+08:00) Irkutsk
228 (GMT+08:00) Ulan Bator
229 (GMT+09:00) Pyongyang
230 (GMT+09:00) Seul
231 (GMT+08:45) Eucla
235 (GMT+09:00) Osaca, Sapporo, Tóquio
240 (GMT+09:00) Yakutsk
241 (GMT+09:00) Chita
245 (GMT+09:30) Darwin
250 (GMT+09:30) Adelaide
255 (GMT+10:00) Camberra, Melbourne, Sidney
260 (GMT+10:00) Brisbane
265 (GMT+10:00) Hobart
270 (GMT+10:00) Vladivostoque
274 (GMT+10:30) Ilha de Lord Howe
275 (GMT+10:00) Guame, Port Moresby
276 (GMT+11:00) Ilha de Bougainville
277 (GMT+11:00) Ilha Norfolk
278 (GMT+11:00) Sakhalin
279 (GMT+11:00) Chokurdakh
280 (GMT+11:00) Ilhas de Salomão, Nova Caledónia
281 (GMT+11:00) Magadã
284 (GMT+12:00) Hora Universal Coordenada+12
285 (GMT+12:00) Fiji
290 (GMT+12:00) Auckland, Wellington
295 (GMT+12:00) Anadyr, Petropavlovsk-Kamchatsky
299 (GMT+12:45) Ilhas Chatham
400 (GMT+13:00) Nuku'alofa
301 (GMT-05:00) Chetumal
302 (UTC+02:00) Cartum
303 (GMT-03:00) Punta Arenas
304 (GMT + 04:00) Volgogrado
305 (GMT-07:00) Yukon