Editar calendários de horas de trabalho usando APIs

Geralmente, as organizações precisam criar, editar ou excluir programaticamente as horas de trabalho nos calendários dos recursos. Os calendários mostram as horas de trabalho, as folgas e os intervalos que determinam a disponibilidade de um recurso quando o trabalho está sendo agendado. Esses recursos devem ser planejados em fusos horários específicos, podem ou não observar feriados comerciais e podem ter capacidade variável. Para obter informações sobre como definir horas de trabalho no aplicativo Field Service, vá para Adicionar horas de trabalho a um recurso reservável.

Além de usar o aplicativo Field Service, você pode usar as seguintes APIs para modificar regras de calendário para tipos de registro selecionados:

  • A API Save Calendar (msdyn_SaveCalendar) cria ou atualiza registros de calendário em uma entidade selecionada, com base nas entradas transmitidas como a solicitação.
  • A API Delete Calendar (msdyn_DeleteCalendar) apaga todas as regras de calendário internas de um calendário em uma entidade selecionada, com base nas entradas transmitidas como a solicitação.
  • A API para salvar/excluir calendário V2 (msdyn_SaveCalendar/msdyn_DeleteCalendar, pass flag UseV2) permite várias recorrências de hora de trabalho simultâneas alterando a lógica de regras sobrepostas. Para obter mais informações, consulte O que acontecerá se houver regras sobrepostas?.

Este artigo contém detalhes sobre cada entrada (solicitação) e cada saída (resposta) da API e o uso, com exemplos.

Pré-requisitos

  • Versão da plataforma 9.2.21055 ou superior com o Agendamento de Recursos Universal versão 3.12.45.7.
  • Uso de um dos seguintes tipos de registro:
    • Recurso reservável (bookableresource)
    • Requisito de recurso (msdyn_resourcerequirement)
    • Modelo de horário de trabalho (msdyn_workhourtemplate)
    • Projeto (msdyn_project)

Tipos de eventos de calendário

Ao criar um calendário, você define quantas vezes um tipo de hora de trabalho ocorre – uma vez, o dia todo, toda semana ou todos os dias, ou você ainda pode criar uma recorrência personalizada. Para obter mais informações sobre esses eventos de calendário, vá para os exemplos mais à frente neste artigo.

Ocorrência

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

Por exemplo, considere um recurso que trabalha das 5h às 10h em 26 de maio de 2021. Essas APIs oferecem suporte apenas a esse tipo de ocorrência, que começa e termina no mesmo dia. Para outro exemplo, considere um recurso que trabalha de 26 de maio de 2021 às 20h até 27 de maio de 2021 às 10h. Não é possível criar esta ocorrência usando apenas uma chamada da API msdyn_SaveCalendar; será necessário fazer duas chamadas.

Ocorrência de dia inteiro

Quando um tipo de hora de trabalho ocorre por um ou mais dias inteiros, começando à meia-noite (0h) da data de início, esta é uma ocorrência de dia inteiro. A duração máxima para uma ocorrência de dia inteiro é de cinco anos.

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

Recorrência semanal

Quando um tipo de hora de trabalho ocorre ao mesmo tempo em dias selecionados de cada semana, ele é chamado de recorrência semanal.

Por exemplo, um recurso trabalha das 5h às 10h todas as segundas, terças e quartas-feiras.

Recorrência diária

Quando um tipo de hora de trabalho ocorre no mesmo horário todos os dias, ele é chamado de recorrência diária.

Por exemplo, um recurso trabalha das 5h às 10h todos os dias da semana.

Recorrência personalizada

Quando um tipo de hora de trabalho ocorre em determinados horários em determinados dias da semana, mas os horários são diferentes em dias diferentes, você pode criar uma recorrência personalizada.

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

Tipos de horário de trabalho

Essas APIs oferecem suporte a operações de criação, atualização e exclusão para os seguintes tipos de horas de trabalho:

Horas de Trabalho

Horário de trabalho é o período em que uma entidade está disponível para realizar trabalho.

Usando essas APIs, você pode fazer o seguinte:

  • Crie, edite ou exclua uma ocorrência de horário de trabalho.
  • Crie, edite ou exclua a recorrência diária de um horário de trabalho.
  • Crie, edite ou exclua a recorrência semanal de um horário de trabalho.
  • Crie, edite ou exclua a recorrência personalizada de um horário de trabalho.
  • Crie, edite ou exclua o horário de trabalho de dia inteiro.
  • Crie ou e dite a capacidade em horários de trabalho.
  • Edite uma única ocorrência de horário de trabalho em uma recorrência.
  • Edite Esta e as seguintes ocorrências em uma recorrência.
  • Altere uma ocorrência de horário de trabalho para uma recorrência.
  • Altere o fuso horário da regra de calendário.

Usando esta API, não é possível fazer o seguinte:

  • Exclua uma única ocorrência de horário de trabalho de uma recorrência.
  • Crie uma ocorrência que se estenda por 24 horas, mas não começa nem termina à meia-noite (0:00).
  • Crie, edite ou exclua uma recorrência de dia inteiro.

Hora de folga

Esses são os horários em que a entidade não está disponível para o trabalho por motivo não especificado.

Usando essas APIs, você pode fazer o seguinte:

  • Crie ou edite horários de folga de dia inteiro.
  • Crie ou edite uma ocorrência de hora de folga.
  • Altere o fuso horário da regra de calendário.

Usando essas APIs, não é possível fazer o seguinte:

  • Crie ou edite uma recorrência de hora de folga.

Intervalo

Estes são os horários da jornada de trabalho em que uma entidade faz um intervalo e não está disponível para o trabalho. Não podem haver intervalos sem horário de trabalho; devem ocorrer entre duas horas de trabalho por dia. Os intervalos não podem sobrepor o horário de trabalho.

Usando essas APIs, você pode fazer o seguinte:

  • Crie ou edite intervalos durante o horário de trabalho.

Usando essas APIs, não é possível fazer o seguinte:

  • Exclua apenas os intervalos de uma ocorrência ou uma recorrência do horário de trabalho.

Folga

Estes são os momentos em que uma entidade não está disponível para o trabalho devido a férias. O motivo da folga pode ser especificado.

Usando essas APIs, você pode fazer o seguinte:

  • Crie ou edite a folga com um rótulo.
  • Altere o fuso horário da regra de calendário.

Usando essas APIs, não é possível fazer o seguinte:

  • Crie ou edite uma recorrência de horário de folga.

Feriado comercial

Você pode criar entidades de fechamento de negócios que definem os horários em que o negócio permanece fechado. Usando a API msdyn_SaveCalendar, você pode definir cada entidade para observar ou ignorar os horários de feriado comercial da organização usando a chave opcional ObserveClosure. Quando estiverem definidas para observar esses fechamentos, as entidades permanecerão indisponíveis para trabalho.

API Save Calendar

Entrada

A solicitação contém apenas um atributo: CalendarEventInfo, que é um tipo de Cadeia de caracteres. Ele contém vários outros atributos que estão todos embutidos nesta cadeia de caracteres.

Observação

Na tabela a seguir, Modelo representa o formato esperado para fazer uma solicitação bem-sucedida. No entanto, toda a solicitação é analisada como uma única cadeia de caracteres.

CalendarEventInfo

Nome Tipo Obrigatório Descrição
EntityLogicalName Cadeia de Caracteres Sim Esta chave descreve a entidade da qual a API está sendo chamada. O calendário desta entidade deve ser criado ou editado.
Calendarid GUID Sim Esta chave contém a ID do calendário relacionada à entidade descrita acima. Quando qualquer uma dessas entidades é criada, um registro de calendário também é criado automaticamente. Essas APIs editam esse registro de calendário adicionando regras ou editando regras existentes.
RulesAndRecurrences RulesAndRecurrences Sim Essa chave é uma matriz, e cada elemento contém vários atributos, conforme listado na tabela da seção a seguir. O tamanho da matriz deve ser pelo menos um.
IsVaried Boolean No Esta chave deve ser definida como true para cenários de recorrência personalizados.
IsEdit Boolean No Esta chave deve ser definida como true para editar regras existentes.
TimeZoneCode Integer No Essa chave assume um valor inteiro correspondente ao fuso horário das regras de calendário. Para o mapeamento, vá para Códigos de fuso horário, mais à frente neste artigo. O valor padrão é o fuso horário do usuário.
InnerCalendarDescription Cadeia de Caracteres No Esta chave só é necessária se a regra do calendário for para folga. Ela deve conter o motivo da folga.
ObserveClosure Boolean No Esta chave é específica para recorrências. Se estiver definida como true, a entidade vai observar o fechamento de negócios.
RecurrenceEndDate DateTime No Esta chave é específica para recorrências. Ela contém a data de término da recorrência. Se o carimbo de data/hora for 08:00:00 ou anterior, a data de término da recorrência será um dia antes da data especificada. Se o carimbo de data/hora for 08:00:01 ou posterior, a data será respeitada no estado em que se encontra. O valor padrão para ocorrências é nulo. O valor padrão para recorrências é 30 de dezembro de 9999, 23:59:59 horas, UTC.
RecurrenceSplit Boolean No Esta chave é específica para recorrências. Está definido como true para editar "Esta e as seguintes ocorrências" de uma recorrência.
ResourceId GUID No Esta chave contém o SystemUserId ou o ResourceId e só deve ser transmitida quando a entidade associada a esta chamada é um recurso reservável do tipo SystemUser. Isso é necessário para verificar os privilégios OwnCalendar na guia Gerenciamento de Serviços.
UseV2 Sinalizador No A passagem desse sinalizador habilita a versão V2 do calendário do horário de trabalho, com uma lógica de regras sobrepostas aprimorada que possibilita várias recorrências. Para obter mais informações, consulte O que acontecerá se houver regras sobrepostas?.

RulesAndRecurrences

Name Type Obrigatória Descrição
Regras Regras Sim Essa chave é uma matriz, e cada elemento contém vários atributos, conforme listado na tabela da seção a seguir. O tamanho da matriz deve ser pelo menos um.
RecurrencePattern Cadeia de Caracteres No Esta chave é específica para recorrências. Atualmente, oferecemos suporte apenas a este padrão: FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA. BYDAY pode ser alterado para incluir menos dias; contudo, FREQ e INTERVAL não podem ser alterados.
InnerCalendarId GUID No Esta chave é específica para edição. Se uma regra está sendo editada, a chave InnerCalendarId precisa ser transmitida aqui. Se uma chave InnerCalendarId não for transmitida, a API cria uma nova regra, mesmo se a chave IsEdit for definida como verdadeira.
Ação Integer No Esta chave é específica para recorrências personalizadas. Se uma recorrência personalizada estiver sendo criada ou editada, um dos seguintes números deve ser inserido:
  • (1) Adicionar um dia à recorrência
  • (2) Excluir um dia da recorrência
  • (3) Editar apenas as datas ou horas de início ou término ou a capacidade de edição
  • (4) Editar qualquer coisa que não seja as chaves mencionadas em (3)

Regras

Nome Digitar Obrigatório Descrição
StartTime DateTime Sim Esta chave contém uma entrada de datetime no Formato ISO. Por exemplo, \"2021-05-15T12:00:00.000Z\". A parte do tempo determina a hora de início da hora de trabalho no fuso horário especificado anteriormente. A parte da 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 recorrência. Se o padrão fosse BYDAY=TU,WE e 15 de maio (um sábado) é a data, a API criará ou editará automaticamente as regras para todas as terças e quartas-feiras após 15 de maio. É o caso em que a regra não tem que ter a data correspondente ao dia.
EndTime DateTime Sim Esta chave contém uma entrada de datetime no Formato ISO. Por exemplo, \"2021-05-15T12:00:00.000Z\". A parte do tempo determina a hora de término da hora de trabalho no fuso horário especificado anteriormente. A parte da data deve conter a mesma data que a parte da data de StartTime. As únicas exceções são:
  • Se for uma ocorrência de dia inteiro. Nesse caso, a parte da data deve refletir a data de término da ocorrência de dia inteiro.
  • A ocorrência termina no final do dia, ou seja, às 0h do dia seguinte. Neste caso, a data deve ser \"2021-05-16T00:00:00.000Z\". Para especificar a data de término da recorrência, modifique o atributo RecurrenceEndDate.
WorkHourType Integer Sim Esta chave contém um número que corresponde a uma das seguintes opções:
  • (0) Trabalho
  • (1) Intervalo
  • (2) Folga
  • (3) Folga
Esforço Integer No Esta chave determina a capacidade da entidade. Deve ser um número inteiro. O valor padrão é 1.

Saída

Esta API POST cria ou modifica registros de regras de calendário para a entidade selecionada. Ela também fornece a saída a seguir.

Nome Tipo Descrição
InnerCalendarIds Cadeia de Caracteres Uma matriz de GUIDs InnerCalendarIds resultante da operação POST.

API Delete Calendar

Entrada

Nome Tipo Obrigatório Descrição
EntityLogicalName Cadeia de Caracteres Sim Este campo descreve a entidade cujas regras de calendário devem ser excluídas.
InnerCalendarId GUID Sim Este campo descreve a ID da chave InnerCalendarId que precisa ser excluída. Se houver várias chaves InnerCalendarIds associadas 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 a chave CalendarId da entidade.
IsVaried Boolean No Este campo é específico para recorrências e está definido como yes se uma regra de recorrência personalizada está sendo excluída.
UseV2 Sinalizador No A passagem desse sinalizador habilita a versão V2 do calendário do horário de trabalho, com uma lógica de regras sobrepostas aprimorada que possibilita várias recorrências. Para obter mais informações, consulte O que acontecerá se houver regras sobrepostas?.

Saída

Esta API POST exclui registros de regras de calendário para a entidade selecionada. Além disso, ela também fornece a saída a seguir.

Nome Digitar Descrição
InnerCalendarIds Cadeia de Caracteres Uma matriz de GUIDs InnerCalendarIds resultante da operação POST.

Carregar API de calendário

Entrada

Nome: msdyn_LoadCalendars
Tipo: ação
Descrição: Retorna calendários para um determinado LoadCalendarsInput.

Nome: msdyn_LoadCalendars.LoadCalendarsInput
Tipo: parâmetro
Descrição: cadeia de caracteres 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 de caracteres no seguinte formato JSON:

{
"calendarId": CalendarEventSlot[]
}

Em que calendarId é um guid indicado que representa o Guid de Calendar e CalendarEventSlot é um objeto do seguinte formato:

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

Como chamar as APIs

Essas APIs podem ser chamadas usando o navegador.

  1. Abra o navegador e a organização em que você precisa fazer essas alterações de calendário.
  2. Abra as Ferramentas para Desenvolvedores (selecione Ctrl+Shift+I no Microsoft Edge, selecione F12 no Google Chrome).
  3. No console, insira a função a seguir, depois de substituir [org-name] pelos 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 que essa função for definida, você pode chamá-la para criar, editar ou excluir calendários usando as APIs. Insira a seguinte chamada para salvar 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
                   }]
               }]
           }"
       })

Insira a seguinte chamada para excluir um calendário:

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

Consulte a seção a seguir para obter exemplos de como fazer chamadas diferentes com base em suas necessidades. Substitua a action da chamada de função na etapa 3 com msdyn_SaveCalendar ou msdyn_DeleteCalendar e substitua data com a chave CalendarEventInfo relevante.

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

Cenários de exemplo para uso de API

Vamos examinar alguns cenários para os quais você pode usar essas APIs.

Bob e Tim são motoristas de caminhão de entrega da Contoso Enterprises em Bellevue, Washington. A despachante, Debbie, é responsável por fazer alterações em seus calendários de horas de trabalho. Debbie faz essas mudanças usando as APIs msdyn_SaveCalendar e msdyn_DeleteCalendar.

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

Lucas está agendado para dirigir a fim de entregar pacotes das 9h às 17h em 15 de maio de 2021. Debbie usa a API msdyn_SaveCalendar.

Solicitação

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

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

A agenda de Lucas muda para começar às 10h do dia 15 de maio de 2021. Debbie usa a API msdyn_SaveCalendar.

Solicitação

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

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

Uma emergência familiar surge e Bob precisa cancelar seu dia inteiro de trabalho. Debbie usa a API msdyn_DeleteCalendar.

Solicitar

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

Resposta

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

Criar uma recorrência diária de horário de trabalho

A partir de 20 de maio de 2021, Bob decide trabalhar com a Contoso a semana toda, das 8h às 17h, e deixará de trabalhar lá em 15 de julho de 2021.

Solicitar

{
 "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 recorrência diária de horário de trabalho com capacidade aumentada

Bob decide parar de trabalhar durante toda a semana de 15 de junho de 2021 para descansar. Até lá, Bob vai continuar o agendamento de toda a semana, conforme ele concordou anteriormente. Debbie faz essas mudanças usando a API msdyn_SaveCalendar.

Solicitação

{
 "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 recorrência semanal de horário de trabalho

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

Solicitar

{
  "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 um intervalo de uma recorrência semanal de horário de trabalho

Então, Debbie corrige o erro e altera o intervalo para ocorrer das 12h às 12h30 usando a API msdyn_SaveCalendar.

Solicitação

{
  "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 recorrência personalizada de horário de trabalho

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

Solicitação

{
"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 recorrência personalizada de horário de trabalho

A agenda de Tim então muda o horário de trabalho de às quartas-feiras das 17h às 20h, e às quintas-feiras das 10h às 12h. A segunda-feira foi removida da agenda de Tim. Debbie usa a API msdyn_SaveCalendar para conseguir fazer isso.

Solicitar

{
"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 em uma recorrência

Em 26 de maio de 2021, Tim só pode trabalhar das 13h às 19h. Debbie usa a API msdyn_SaveCalendar aqui.

Solicitar

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

Excluir uma recorrência personalizada de horário de trabalho

Tim decidiu deixar a empresa e teve que excluir toda a agenda. Debbie usa a API msdyn_DeleteCalendar aqui.

Solicitar

{
 "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 folga

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

Solicitação

{
 "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ário de trabalho de dia inteiro

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

Solicitar

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

Perguntas frequentes do

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

Verifique se não há sobreposições nos intervalos de tempo das diferentes regras de calendário. Verifique as datas para garantir que StartTime não seja posterior a EndTime. Além disso, verifique se os horários seguem o formato de 24 horas.

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

Sim, você pode usar esta API para criar e atualizar modelos de horas de trabalho, além das horas de trabalho de recursos.

Estou recebendo o erro "Ocorreu um erro ao desserializar o objeto do tipo Microsoft.Dynamics.UCICalendar.Plugins.SaveCalendarContract+CalendarEventInfo. A fonte de entrada não está formatada corretamente.
ou
Esperando o estado 'Elemento'.. Encontrou 'Texto' com o nome '', namespace ''."

Garanta que a cadeia de caracteres seja analisada corretamente. Colchetes, vírgulas ou pontos e vírgulas podem estar ausentes.

Estou recebendo o erro "Padrão de recorrência inválido. Consulte a documentação para obter padrões suportados".

Atualmente, oferecemos suporte apenas a este padrão: FREQ=DAILY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA. BYDAY pode ser alterado para incluir menos dias; contudo, FREQ e INTERVAL não podem ser alterados. Verifique se não há espaços no padrão.

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

A CalendarId pode ser recuperada 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).

A InnerCalendarId pode ser recuperada 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?

Existem algumas classificações diferentes nas quais as regras se enquadram:

  • Classificação 1 - ocorrência diária (trabalhando/folga) e ocorrência de folga.
  • Classificação 0 - recorrência semanal (trabalhando/folga).

Regras sobrepostas V2

  • As regras da Classificação 1 têm uma prioridade mais alta do que as regras da Classificação 0. Se houver duas regras (uma de cada classificação) no mesmo dia, a ocorrência diária ou ocorrência de folga terá prioridade sobre a recorrência semanal.
  • Quando houver várias regras de classificação 0 no mesmo intervalo de datas:
    • Se não se cruzarem, ambos os horários permanecerão no calendário.
    • Se houver interseção dos horários, a regra criada/modificada mais recentemente será a levada em consideração 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 será dividida para reter as seções sem interseção, e as partes com interseção serão removidas.

Exemplos de comportamento do calendário V2:

Exemplo 1 – Horários de trabalho repetitivos: datas sobrepostas sem dias/horas sobrepostos

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

  1. Crie uma primeira regra de calendário de repetição para um determinado intervalo de datas. Por exemplo: Repetir Seg, Ter; 1.1-4.1; 8h-17h ET.

  2. Crie uma segunda regra de calendário repetitiva para um intervalo de datas em interseção, ao mesmo tempo em que garante que o horário de trabalho não entre em interseção com os dias ou horários anteriores. Por exemplo: Repetir Qua, Qui; 1.1-4.1; 8h-17h ET ou Repetir Seg, Ter; 1.1-4.1; 17h-20h ET.

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

Exemplo 2 – Horário de trabalho repetitivo: algumas datas sobrepostas, com todos os dias sobrepostos e a segunda regra começa/termina antes ou depois da primeira regra

Um técnico recebe uma nova agenda de trabalho, que substitui algumas semanas da anterior. Por contrato, eles sempre trabalham nos mesmos dias em todas as semanas.

  1. Crie uma primeira regra de calendário de repetição para um determinado intervalo de datas. Por exemplo: Repetir Seg, Ter; 2.1-4.1; 8h-17h ET.

  2. Crie uma segunda regra de calendário de repetição para um intervalo de datas sobreposto, no qual todos os dias tenham horários de trabalho sobrepostos. Escolha datas de início/término para essa nova regra que sejam anteriores ou posteriores à data de início/término da primeira regra. Por exemplo: Repetir Seg, Ter; 3.1-5.1; 13h-20h ET.

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

Exemplo 3 – Horários de trabalho repetitivos: todas as datas sobrepostas, com alguns dias/horas sobrepostos

O técnico é um trabalhador contratado por um período fixo de dois meses. Eles concordaram em assumir trabalho adicional em alguns dias. Eles querem mudar o horário de trabalho de terça-feira para um horário mais cedo/mais tarde.

  1. Crie algumas regras de calendário de repetição para um determinado intervalo de datas. Por exemplo: Repetir Seg, Ter; 2.1-4.1; 8h-12h ET E Repetir Seg, Qua; 2.1-4.1; 13h-17h ET.

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

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

Exemplo 4 – Horários de trabalho repetitivos: novas datas de regra contidas na regra anterior, alguns dias/horários sobrepostos

Um técnico trabalha das 8h às 17h, de segunda a sexta, toda semana. Por apenas duas semanas, eles cuidarão de um projeto especial de emergência de toda segunda a quarta, com horários de trabalho diferentes, das 6h às 18h.

  1. Crie uma primeira regra de calendário de repetição para um determinado intervalo de datas. Por exemplo: Repetir Seg, Ter, Qua, Qui, Sex; 1.1-Sem data de término; 8h-17h ET.

  2. Crie uma segunda regra de calendário repetitiva contida no intervalo de datas acima; escolha horas de trabalho que se sobreponham em alguns dias. Por exemplo: Repetir Seg, Ter, Qua; 5.1-5.14; 6h-18h ET.

Resultado: o calendário deve ter quatro regras repetitivas ao final deste exercício:

  • truncar a primeira regra até a data de início da segunda regra
  • a segunda regra de calendário
  • criar uma nova regra semelhante à primeira regra, mas com as datas da segunda regra para os dias não sobrepostos
  • truncar a primeira regra até o início da data de término da segunda, sem data de término

Por exemplo: Repetir Seg, Ter, Qua, Qui, Sex; 1.1–4.30; 8h-17h ET E Repetir Seg, Ter, Qua; 5.1-5.14; 6h-18h ET E Repetir Qui, Sex, 5.1-5.14; 8h-17h ET E Repetir Seg, Ter, Qua, Qui, Sex; 5.15–Sem data de término; 8h-17h ET

Exemplo 5 – Horários de trabalho não repetitivos (ocorrência, regra de classificação 1)

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

  1. Crie uma regra de calendário de repetição para um determinado intervalo de datas. Por exemplo: Repetir Seg, Ter, Qua, Qui, Sex; 1.1-Sem data de término; 8h-17h ET.

  2. Crie uma regra de calendário não repetitiva contida no intervalo de datas acima. Escolha horários de trabalho que se sobreponham em alguns dias. Por exemplo: Não repetir; 6.21; 7h-13h ET.

Resultado: o calendário deve ter uma regra não repetitiva (ocorrência) ao final do exercício. A regra repetitiva substitui o evento de repetição sobreposto para o dia inteiro. Por exemplo: Repetir Seg, Ter, Qua, Qui, Sex; 1.1-Sem data de término exceto 6.21; não repetir; 6.21; 7h-13h ET.

Regras sobrepostas V1

  • As regras da Classificação 1 têm uma prioridade mais alta do que as regras da Classificação 0. Portanto, se houver duas regras (uma de cada classificação) no mesmo dia, a ocorrência diária ou de folga terá prioridade sobre a recorrência semanal.
  • Se houver duas regras com a mesma classificação, a regra criada/modificada mais recentemente será aquela considerada para o calendário do recurso.
  • Lembre-se de que as ocorrências de dia inteiro são de Classificação 1, portanto, você poderá querer considerar alterá-las para uma recorrência semanal a fim de poder adicionar horas de trabalho de ocorrência e fazer com que sejam respeitadas.
  • Quando exibir uma hora de trabalho e uma ocorrência de folga for criada sobrepondo-se a ela, as regras serão divididas de forma a garantir que a folga seja respeitada e qualquer tempo restante como horas de trabalho permanecerá como está. Por exemplo, se houver horário de trabalho das 8h às 17h em 21 de setembro, e uma ocorrência de folga for adicionada das 15h às 19h em 21 de setembro, isso será resolvido como horário de trabalho de 20h às 15h e folga das 15h às 19h. No entanto, se as regras tiverem sido criadas na ordem oposta (folga criada primeiro e depois as horas de trabalho foram criadas) independentemente dos intervalos de tempo, apenas a hora de trabalho seria selecionada novamente. A folga seria anulada.

Códigos do fuso horário

Enum Fuso horário
0 (GMT-12:00) Linha de Data Internacional Oeste
1 (GMT+13:00) Samoa
2 (GMT-10:00) Havaí
3 (GMT-09:00) Alasca
4 (GMT-08:00) Hora do Pacífico (EUA e Canadá)
5 (GMT-08:00) Baixa Califórnia
6 (GMT-11:00) Tempo Universal Coordenado-11
7 (GMT-10:00) Ilhas Aleutas
8 (GMT-09:30) Ilhas Marquesas
9 (GMT-09:00) Tempo Universal Coordenado-09
10 (GMT-07:00) Hora das Montanhas (EUA e Canadá)
11 (GMT-08:00) Tempo Universal Coordenado-08
12 (GMT-07:00) Chihuahua, La Paz, Mazatlan
15 (GMT-07:00) Arizona
20 (GMT-06:00) Hora Central (EUA 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 (EUA e Canadá)
40 (GMT-05:00) Indiana (Leste)
43 (GMT-05:00) Haiti
44 (GMT-05:00) Havana
45 (GMT-05:00) Bogotá, Lima, Quito, Rio Branco
47 (GMT-04:00) Caracas
50 (GMT-04:00) Hora do Atlântico (Canadá)
51 (GMT-05:00) Turcas e Caicos
55 (GMT-04:00) Georgetown, La Paz, San Juan
56 (GMT-04:00) Santiago
58 (GMT-04:00) Cuiabá
59 (GMT-04:00) Assunção
60 (GMT-03:30) Terra Nova
65 (GMT-03:00) Brasília
69 (GMT-03:00) Buenos Aires
74 (GMT-03:00) Caiena, Fortaleza
71 (GMT-03:00) Salvador
72 (GMT-03:00) São Pedro e Miquelon
73 (GMT-03:00) Groenlândia
74 (GMT-03:00) Montevidéu
75 (GMT-02:00) Atlântico Central
76 (GMT-02:00) Tempo Universal Coordenado-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, Edinburgo, Lisboa, Londres
90 (GMT+00:00) Monróvia, Reykjavik
92 (GMT) Tempo Universal Coordenado
95 (GMT+01:00) Belgrado, Bratislava, Budapeste, Liubliana, Praga
100 (GMT+01:00) Sarajevo, Skopje, Varsóvia, Zagreb
105 (GMT+01:00) Bruxelas, Copenhague, Madri, Paris
110 (GMT+01:00) Amsterdã, Berlim, Berna, Roma, Estocolmo, Viena
113 (GMT+01:00) Centro-Oeste da África
115 (GMT+02:00) Chisinau
120 (GMT+02:00) Cairo
125 (GMT+02:00) Helsinque, Kiev, Riga, Sófia, Tallinn, 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) Gaza, Hebron
145 (GMT+03:00) Moscou, São Petersburgo
150 (GMT+03:00) Kuwait, Riad
151 (GMT+03:00) Minsk
155 (GMT+03:00) Nairóbi
158 (GMT+03:00) Bagdá
159 (GMT+02:00) Kaliningrado
160 (GMT+03:30) Teerã
165 (GMT+04:00) Abu Dhabi, Mascate
169 (GMT+04:00) Baku
170 (GMT+04:00) Ierevan
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, Ulyanovsk
180 (GMT+05:00) Ecaterimburgo
184 (GMT+05:00) Islamabad, Karachi
185 (GMT+05:00) Tashkent
190 (GMT+05:30) Chennai, Kolkata, Mumbai, Nova Délhi
193 (GMT+05:45) Katmandu
195 (GMT+06:00) Astana
196 (GMT+06:00) Dacca
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) Bancoc, Hanói, Jacarta
207 (GMT+07:00) Krasnoyarsk
208 (GMT+07:00) Barnaul, Gorno-Altaysk
209 (GMT+07:00) Hovd
210 (GMT+08:00) Beijing, Chonquim, Hong Kong, Urumqi
211 (GMT+07:00) Tomsk
215 (GMT+08:00) Kuala Lumpur, Cingapura
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) Osaka, 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, Sydney
260 (GMT+10:00) Brisbane
265 (GMT+10:00) Hobart
270 (GMT+10:00) Vladivostok
274 (GMT+10:30) Ilha Lord Howe
275 (GMT+10:00) Guam, Port Moresby
276 (GMT+11:00) Ilha Bougainville
277 (GMT+11:00) Ilha Norfolk
278 (GMT+11:00) Sakhalin
279 (GMT+11:00) Chokurdakh
280 (GMT+11:00) Ilhas Salomão, Nova Caledônia
281 (GMT+11:00) Magadã
284 (GMT+12:00) Tempo Universal Coordenado+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
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) Volgogrado
305 (GMT-07:00) Yukon