Ir para conteúdo
  • 0

diferença de datas em dias uteis e horario comercial


Caio Murilo
Ir para solução Solucionado por Alex Pereira ,

Pergunta

  • Alunos

boa tarde segue em anexo um exemplo onde consta o chamado data de inicio e data fim, preciso identifica a difereneça em segundos da data inicio ate a data fim considerando 08:00 ate as 18:00

Criterio: caso a data inicio seja antes das 08:00:00 deve iniciar a contagem as 08:00:00
Criterio: caso a data fim seja pos as 18:00:00 e é no mesmo dia consider ate a contagem as 18:00:00
Cireterio: caso data fim seja pos as 18:00:00 e não no mesmo dia, entao inicie a contagem partindo das 08:00 ate a data fim respeitando os criteiros acima

no exemplo acima. o chamado 3, nao consegui adpar as condições

Horas Comerciais em dias uteis.xlsx

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
15 horas atrás, Caio Murilo disse:

boa tarde segue em anexo um exemplo onde consta o chamado data de inicio e data fim, preciso identifica a difereneça em segundos da data inicio ate a data fim considerando 08:00 ate as 18:00

Criterio: caso a data inicio seja antes das 08:00:00 deve iniciar a contagem as 08:00:00
Criterio: caso a data fim seja pos as 18:00:00 e é no mesmo dia consider ate a contagem as 18:00:00
Cireterio: caso data fim seja pos as 18:00:00 e não no mesmo dia, entao inicie a contagem partindo das 08:00 ate a data fim respeitando os criteiros acima

no exemplo acima. o chamado 3, nao consegui adpar as condições

Horas Comerciais em dias uteis.xlsx 20.49 kB · 0 downloads

Veja se esse scripth resolve seu problema.

 

let
    Fonte = Excel.Workbook(File.Contents("C:\Users\alexd\Downloads\Horas Comerciais em dias uteis.xlsx"), null, true),
    Tabela1_Table = Fonte{[Item="Tabela1",Kind="Table"]}[Data],
    #"Tipo Alterado" = Table.TransformColumnTypes(Tabela1_Table,{{"Chamado", Int64.Type}, {"Data Inicio", type datetime}, {"Data Fim", type datetime}}),
   // Ajuste a "Data Inicio" conforme o Critério 1
    AjusteDataInicio = Table.AddColumn(#"Tipo Alterado", "Data Inicio Ajustada", each if Time.From([Data Inicio]) < #time(08, 0, 0) then DateTime.From(Date.From([Data Inicio]) & #time(08, 0, 0)) else [Data Inicio], type date),
    
    // Ajuste a "Data Fim" conforme o Critério 2 e 3, e adicionar Critério para Data Fim nulo
    AjusteDataFim = Table.AddColumn(AjusteDataInicio, "Data Fim Ajustada", each 
        if [Data Fim] = null then null
        else if Date.From([Data Fim]) = Date.From([Data Inicio]) and Time.From([Data Fim]) > #time(18, 0, 0) then 
            DateTime.From(Date.From([Data Fim]) & #time(18, 0, 0))
        else if Date.From([Data Fim]) <> Date.From([Data Inicio]) and Time.From([Data Fim]) > #time(18, 0, 0) then
            DateTime.From(Date.From([Data Fim]) & #time(08, 0, 0)) + (Duration.From([Data Fim] - DateTime.From(Date.From([Data Fim]) & #time(08, 0, 0))))
        else [Data Fim], type date),
    
    // Calcular a Duração entre "Data Inicio Ajustada" e "Data Fim Ajustada" considerando Data Fim nulo
    Duração = Table.AddColumn(AjusteDataFim, "Duração", each if [Data Fim Ajustada] = null then null else Duration.From([Data Fim Ajustada] - [Data Inicio Ajustada]), type time)
in
    Duração

Explicação do script:

  1. AjusteDataInicio: Ajusta a Data Inicio se for antes das 08:00:00.
  2. AjusteDataFim: Ajusta a Data Fim se for após as 18:00:00 no
    mesmo dia ou em um dia diferente.
  3. Duração: Calcula a duração entre as datas ajustadas.


    image.png.00fd7c4198b04316aa6ab27ad1bdfac7.png
  • Like 1
Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...