Horário de atendimento pegando UTC 00:00

Boa noite Galera,

Montamos um bot com validação da saudação de acordo com o horário.

Seguimos todas as instruções, do fórum, mas mesmo assim não esta alterando o horário para -3.

Abaixo segue o que realizamos.

function run(offset) {

let now = new Date;
let utc_timestamp = Date.UTC(now.getUTCFullYear(), 
 now.getUTCMonth(), 
 now.getUTCDate(),
 now.getUTCHours(), 
 now.getUTCMinutes(), 
 now.getUTCSeconds(), 
 now.getUTCMilliseconds());

  var date = new Date(utc_timestamp + offset * 3600 * 1000);

    return date.getHours();

}

function run(){

let date = new Date();
let hour = date.getHours();
let min = date.getMinutes();

     if(hour>=0 && hour<6){
        return "Boa Madrugada"
     }
    else if(hour>=6 && hour<12){
        return "Bom dia"
    }
    else if(hour>=12 && hour<18){
        return "Boa tarde"
    }
    else{
        if(hour>=18 && hour<23){ 
            return "Boa noite";
            }
    }

image

Poderiam me ajudar? É algum BUG ou realizei algum procedimento errado?

Olá @mgsoares como vai?

Cara, eu rodei o seu script e eu notei uma coisa. Quando usamos o return date.getHours() ele retorna 13 (agora são 16h).

Quando eu tirei o getHours(), ele retornou a hora atual corretamente. Poderia fazer esse teste se acontece com você também, por favor?

Boa noite @Bruno, tudo bem?

Com ou sem o getHours() esta retornando UTC 0. :sweat_smile:

Olá @mgsoares

Me tira uma dúvida: Esses dois códigos que você enviou estão na mesma ação de executar script? Agora eu reparei que no segundo código você está criando uma nova data

Aqui ele sempre vai pegar UTC 0 mesmo, pois você não fez o tratamento do offset. A hora que você está usando para gerar as frases está sendo sempre essa e inclusive a hora gerada no primeiro script, não está sendo usada para nada.

Se você está usando o mesmo script, troque o nome da segunda função (como as duas são run, pode estar causando alguma sobreposição) e passe para ela como parâmetro a data retornada aqui e retire essa criação de data.

return date.getHours();

Se você está fazendo em ações de script diferente, passe a hora retornada no primeiro script como variável de entrada para o segundo, também removendo a função de gerar uma nova data.