DurationCalculator - Global

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 8 min. de leitura
  • A inclusão de script DurationCalculator fornece métodos para calcular durações e datas de vencimento.

    DurationCalculator - DurationCalculator( )

    Construtor da classe DurationCalculator.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    Nenhum
    var dc = new DurationCalculator();

    DurationCalculator - calcDuration(Número de segundos)

    Calcula uma data e hora de término com base na data e hora de início atuais e passadas em duração (segundos).

    Este método também define as propriedades this.endDateTime, this.secondse this.totalSeconds com os valores atualizados. A propriedade seconds representa o número total de segundos de trabalho a ser realizado na duração com base na programação de trabalho. A propriedade totalSeconds representa o número total de segundos entre os horários de início e término da duração, o que inclui trabalho e não trabalho.

    Antes de chamar este método, você deve chamar setStartDateTime() com a hora de início a ser usada para a duração.

    Tabela 2. Parâmetros
    Nome Tipo Descrição
    segundos Número Número de segundos a serem adicionados à data e hora de início para calcular os valores de data e hora de término, segundos e total de segundos.
    Tabela 3. Retornos
    Tipo Descrição
    Booliano Falso se o valor de entrada não for um número.
    var gdt = new GlideDateTime("2020-05-01 00:00:00");
    
    var dc = new DurationCalculator();
    dc.setStartDateTime(gdt);
    
    if(!dc.calcDuration(2*24*3600)){ // 2 days
      gs.log("*** Error calculating duration");
      return;
    }
    var secs = dc.getSeconds();
    var totalSecs = dc.getTotalSeconds();
    
    gs.print("***SCHEDULE DURATION: SECS=" + secs + " TOTALSECS=" + totalSecs + " ENDTIME = " + endDateTime);

    Saída

    ***SCHEDULE DURATION: SECS=172800 TOTALSECS=970534 ENDTIME = 2020-05-03 00:00:00

    DurationCalculator - calcRelativeDueDate(GlideDateTime start, Number days, String endTime)

    Calcula a data de vencimento começando na hora de início aprovada e adicionando o número de dias usando a programação e o fuso horário atuais.

    Chamado a partir de definições de duração relativa, iniciadas por calcRelativeDuration(), como calculadora.calculRelativeDueDate(calculator.startDateTime, days). Depois que o dia em que o trabalho vence é determinado, o método define a hora como aprovada em endTime desse dia. Se não houver dias suficientes na programação, usará o último dia na programação.

    Tabela 4. Parâmetros
    Nome Tipo Descrição
    iniciar GlideDateTime Objeto GlideDateTime que contém a data de início do cálculo.
    dias Número Número de dias a serem adicionados à data de início.
    endTime Cadeia de caracteres Hora do dia em que o trabalho vence na data de vencimento calculada.

    Se estiver em branco, o padrão será o fim do dia útil.

    Formato: HH:mm:ss

    Tabela 5. Retornos
    Tipo Descrição
    Booliano Sinalizador que indica se a data de conclusão está dentro da programação.
    Valores possíveis:
    • verdadeiro: a data de conclusão está dentro da programação.
    • falso: a data de conclusão está fora da programação. Indefinido se nenhuma programação tiver sido definida antes de chamar este método.
    var dc = new DurationCalculator();
    var startTime = new GlideDateTime();
    
    // Settings for calculations
    // Optional: Specify the schedule to use for the following calculations
    dc.setSchedule('08fcd0830a0a0b2600079f56b1adb9ae'); 
    // Optional: Specify a different timezone to use
    dc.setTimeZone("Los Angeles");
    // Optional: Set a start date and time, otherwise the current time is assumed
    dc.setStartDateTime("2020-04-10 08:00:00")
    // Calculate end time, from number of seconds required in the schedule
    dc.calcDuration(3*24*3600); // 3 days
    dc.calcRelativeDueDate(startTime, "3", "07:00:00");

    DurationCalculator - calcRelativeDuration(cadeia de caracteres relativaDurationID)

    Calcula a duração usando o script de duração relativa especificado.

    Após a conclusão, as propriedades this.endDateTime e this.seconds são definidas para indicar os resultados do cálculo.

    Tabela 6. Parâmetros
    Nome Tipo Descrição
    ID da duração relativa Cadeia de caracteres sys_id da programação de duração relativa (tabela cmn_relative_duration).
    Tabela 7. Retornos
    Tipo Descrição
    Booliano O resultado do script de duração.
    var dc = new DurationCalculator();
    dc.calcRelativeDuration('08fcd0830a0a1b2600074f56b1ad7cb');

    DurationCalculator - calcScheduleDuration(String startTime, String endTime)

    Retorna a duração entre startTime e endTime dentro da programação já especificada e, opcionalmente, o fuso horário substituído.

    Este método também define this.endDateTime, this.secondse this.totalSeconds no objeto de programação atual.

    Tabela 8. Parâmetros
    Nome Tipo Descrição
    startTime Cadeia de caracteres Opcional. Valor de exibição para a hora de término.

    Padrão: usa a data e a hora atuais (definidas usando setStartDateTime()). Você deve passar um espaço reservado se este parâmetro não tiver passado, como dur.calculScheduleDuration("", endDateTime);.

    endTime Cadeia de caracteres Opcional. Valor de exibição para a hora de início.

    Padrão: usa a data e hora atuais (definidas usando setEndDateTime()).

    Tabela 9. Retornos
    Tipo Descrição
    Número Duração da programação. Retorna 0 se endTime for anterior startTimea .

    Unidade: segundos

    var dur = new DurationCalculator();
    
    // Set 9-5 weekday schedule. This is the schedule in which endDateTime, seconds, and totalseconds is set
    dur.setSchedule('08fcd0830a0a0b2600079f56b1adb9ae');
    dur.calcScheduleDuration("2019-01-02 11:00:00", "2019-01-06 09:00:00");
    var secs = dur.getSeconds();
    var totalSecs = dur.getTotalSeconds();
    var endDateTime = dur.getEndDateTime() + "";
    
    gs.print("***SCHEDULE DURATION: SECS=" + secs + " TOTALSECS=" + totalSecs + " ENDTIME = " + endDateTime);

    Saída

    ***SCHEDULE DURATION: SECS=97200 TOTALSECS=338400 ENDTIME = 2019-01-06 09:00:00

    DurationCalculator - calcScheduleDuration(GlideDateTime startTime, GlideDateTime endTime)

    Retorna a duração entre startTime e endTime dentro da programação já especificada e, opcionalmente, o fuso horário substituído.

    Este método também define this.endDateTime, this.secondse this.totalSeconds no objeto de programação atual.

    Tabela 10. Parâmetros
    Nome Tipo Descrição
    startTime GlideDateTime Opcional. Objeto GlideDateTime que contém a hora de início a ser usada.

    Padrão: usa a data e a hora atuais (definidas usando setStartDateTime()). Você deve passar um espaço reservado se este parâmetro não tiver passado, como dur.calculScheduleDuration("", endDateTime);.

    endTime GlideDateTime Opcional. Objeto GlideDateTime que contém a hora de término a ser usada.

    Padrão: usa a data e hora atuais (definidas usando setEndDateTime()).

    Tabela 11. Retornos
    Tipo Descrição
    Número Duração da programação. Retorna 0 se endTime for anterior startTimea .

    Unidade: segundos

    var startDateTime = new GlideDateTime("2020-11-02 11:00:00");
    // Instantiate a new GlideDateTime object which has the end date as the current date and time
    var endDateTime = new GlideDateTime(); 
    var dur = new DurationCalculator();
    
    // Set 9-5 weekday schedule. This is the schedule in which endDateTime, seconds, and totalseconds is set
    dur.setSchedule('08fcd0830a0a0b2600079f56b1adb9ae'); 
    dur.calcScheduleDuration(startDateTime, endDateTime);
    var secs = dur.getSeconds();
    var totalSecs = dur.getTotalSeconds();
    
    gs.print("***SCHEDULE DURATION: SECS=" + secs + " TOTALSECS=" + totalSecs + " ENDTIME = " + endDateTime);

    Saída

    ***SCHEDULE DURATION: SECS=293734.24 TOTALSECS=970534 ENDTIME = 2020-11-13 16:35:34

    DurationCalculator - getEndDateTime( )

    Obtém a propriedade endDateTime que foi definida por calcDuration/calcRelativeDuration, indicando a data e hora de término da duração.

    Tabela 12. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 13. Retorna
    Tipo Descrição
    GlideDateTime A data/hora de término.
    var dc = new DurationCalculator();
    dc.calcDuration(52);
    gs.print(dc.getEndDateTime());

    2012-04-17 20:57:27

    DurationCalculator - getSeconds()

    Retorna a propriedade this.seconds que foi definida por calcDuration/calcRelativeDuration, indicando o número total de segundos de trabalho a ser realizado para a duração.

    Este é o tempo total de trabalho, não o tempo total entre os horários de início e término e pode ser usado para determinar porcentagens do tempo de trabalho.

    Tabela 14. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 15. Retorna
    Tipo Descrição
    Número O tempo total de trabalho, em segundos.
    var startDateTime = new GlideDateTime("2020-11-02 11:00:00");
    // Instantiate a new GlideDateTime object which has the end date as the current date and time
    var endDateTime = new GlideDateTime(); 
    var dur = new DurationCalculator();
    
    // Set 9-5 weekday schedule. This is the schedule in which endDateTime, seconds, and totalseconds is set
    dur.setSchedule('08fcd0830a0a0b2600079f56b1adb9ae'); 
    dur.calcScheduleDuration(startDateTime, endDateTime);
    var secs = dur.getSeconds();
    var totalSecs = dur.getTotalSeconds();
    
    gs.print("***SCHEDULE DURATION: SECS=" + secs + " TOTALSECS=" + totalSecs + " ENDTIME = " + endDateTime);

    Saída

    ***SCHEDULE DURATION: SECS=293734.24 TOTALSECS=970534 ENDTIME = 2020-11-13 16:35:34

    DurationCalculator - getTotalSeconds()

    Retorna o valor totalSeconds que foi definido por uma chamada para calcular (registro).

    A propriedade totalSeconds representa o número total de segundos entre os horários de início e término da duração, o que inclui trabalho e não trabalho.

    Tabela 16. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 17. Retorna
    Tipo Descrição
    Número O número total de segundos.
    var startDateTime = new GlideDateTime("2020-11-02 11:00:00");
    // Instantiate a new GlideDateTime object which has the end date as the current date and time
    var endDateTime = new GlideDateTime(); 
    var dur = new DurationCalculator();
    
    // Set 9-5 weekday schedule. This is the schedule in which endDateTime, seconds, and totalseconds is set
    dur.setSchedule('08fcd0830a0a0b2600079f56b1adb9ae'); 
    dur.calcScheduleDuration(startDateTime, endDateTime);
    var secs = dur.getSeconds();
    var totalSecs = dur.getTotalSeconds();
    
    gs.print("***SCHEDULE DURATION: SECS=" + secs + " TOTALSECS=" + totalSecs + " ENDTIME = " + endDateTime);

    Saída

    ***SCHEDULE DURATION: SECS=293734.24 TOTALSECS=970534 ENDTIME = 2020-11-13 16:35:34

    DurationCalculator - isAfter(GlideDateTime dt, String tm)

    Compara o tempo passado com o valor de tempo no objeto GlideDateTime passado.

    Tabela 18. Parâmetros
    Nome Tipo Descrição
    dt GlideDateTime ou cadeia de caracteres Um objeto GlideDateTime ou uma data e hora de valor de exibição para comparar com o valor passado tm. Se você passar uma data e hora de valor de exibição, o método a converterá em um objeto GlideDateTime.
    tm Cadeia de caracteres Valor de exibição do tempo a ser comparado com o valor de tempo no objeto GlideDateTime. Assume a mesma data.

    Formato: HH:mm:ss

    Tabela 19. Retornos
    Tipo Descrição
    Booliano Sinalizador que indica se o valor de tempo passado (tm) é posterior à hora no objeto GlideDateTime (dt).
    Valores possíveis:
    • verdadeiro: tm está após dt.
    • falso tm não está depois de dt.
    var dc = new DurationCalculator();
    gs.print(dc.isAfter("2020-04-10 08:00:00", "09:00:00"));

    *** Script: verdadeiro

    DurationCalculator - setSchedule(cadeia de caracteres schedId, cadeia de caracteres fuso horário)

    Define a programação e o fuso horário a serem usados para calcular a data de vencimento.

    Tabela 20. Parâmetros
    Nome Tipo Descrição
    schedId Cadeia de caracteres Sys_id da programação a ser definida.

    Tabela: Programação [cmn_schedule].

    fuso horário Cadeia de caracteres Opcional. Fuso horário a ser definido.

    Padrão: fuso horário do usuário.

    Tabela 21. Retornos
    Tipo Descrição
    vazio

    O exemplo de código a seguir mostra como chamar este método.

    var startDateTime = new GlideDateTime("2020-11-02 11:00:00");
    // Instantiate a new GlideDateTime object which has the end date as the current date and time
    var endDateTime = new GlideDateTime(); 
    var dur = new DurationCalculator();
    
    // Set 9-5 weekday schedule. This is the schedule in which endDateTime, seconds, and totalseconds is set
    dur.setSchedule('08fcd0830a0a0b2600079f56b1adb9ae'); 
    dur.calcScheduleDuration(startDateTime, endDateTime);
    var secs = dur.getSeconds();
    var totalSecs = dur.getTotalSeconds();
    
    gs.print("***SCHEDULE DURATION: SECS=" + secs + " TOTALSECS=" + totalSecs + " ENDTIME = " + endDateTime);

    Saída:

    ***SCHEDULE DURATION: SECS=293734.24 TOTALSECS=970534 ENDTIME = 2020-11-13 16:35:34

    DurationCalculator - setStartDateTime(String start)

    Define a data e a hora de início dos cálculos de duração.

    Tabela 22. Parâmetros
    Nome Tipo Descrição
    iniciar Cadeia de caracteres Valor de exibição da hora de início em GMT para cálculos subsequentes.
    Tabela 23. Retornos
    Tipo Descrição
    vazio
    var dc = new DurationCalculator();
    dc.setStartDateTime("2020-04-10 08:00:00")

    DurationCalculator - setStartDateTime(descrição de GlideDateTime)

    Define a data e a hora de início dos cálculos de duração.

    Tabela 24. Parâmetros
    Nome Tipo Descrição
    descrição GlideDateTime Objeto GlideDateTime que contém a hora de início em GMT para cálculos subsequentes.
    Tabela 25. Retornos
    Tipo Descrição
    vazio
    var startDateTime = new GlideDateTime("2020-11-02 11:00:00"); 
    var dur = new DurationCalculator();
    
    // Set 9-5 weekday schedule.
    dur.setSchedule('08fcd0830a0a0b2600079f56b1adb9ae'); 
    dur.setStartDateTime(startDateTime);

    DurationCalculator - setTimeZone(cadeia de caracteres fuso horário)

    Define o fuso horário a ser usado para calcular a data de vencimento.

    Tabela 26. Parâmetros
    Nome Tipo Descrição
    fuso horário Cadeia de caracteres Valor do fuso horário.
    Tabela 27. Retornos
    Tipo Descrição
    vazio
    var dc = new DurationCalculator();
    dc.setTimeZone("Los Angeles");