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:
|
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:
|
WorkHourType | Número inteiro | Sim | Esta chave contém um número correspondente a uma das seguintes opções:
|
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.
- Abra o browser e a organização nos quais precisa de fazer estas alterações de calendário.
- Abra as Ferramentas de Programação (selecione Ctrl+Shift+I no Microsoft Edge, selecione F12 no Google Chrome).
- 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));
}
- 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
:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 |