---
sourceDocument: Referência de API do Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Referência de API do Xanadu

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# DurationCalculator - Global

# DurationCalculator - Global {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 8 min. de leitura

A inclusão de script DurationCalculator fornece métodos para calcular durações e datas de vencimento.

## DurationCalculator - DurationCalculator( ) {#ariaid-title2}

Construtor da classe DurationCalculator.
{#r_DC-DurationCalculator__table_ik1_1kp_4t__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 1. Parâmetros]

{#r_DC-DurationCalculator__table_ik1_1kp_4t}  

    var dc = new DurationCalculator();

## DurationCalculator - calcDuration(Número de segundos) {#ariaid-title3}

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.
{#r_DC-calcDuration_N__table_pw4_gvb_4t__entry__3}

| 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 2. Parâmetros]

{#r_DC-calcDuration_N__table_pw4_gvb_4t} {#r_DC-calcDuration_N__table_qw4_gvb_4t__entry__2}

| Tipo | Descrição |
|-|-|
| Booliano | Falso se o valor de entrada não for um número. |
[Tabela 3. Retorna]

{#r_DC-calcDuration_N__table_qw4_gvb_4t}  

    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) {#ariaid-title4}

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.
{#r_DC-calcRelativeDueDate_GDT_N_S__table_vw4_gvb_4t__entry__3}

| 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 4. Parâmetros]

{#r_DC-calcRelativeDueDate_GDT_N_S__table_vw4_gvb_4t} {#r_DC-calcRelativeDueDate_GDT_N_S__table_ww4_gvb_4t__entry__2}

| 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. |
[Tabela 5. Retorna]

{#r_DC-calcRelativeDueDate_GDT_N_S__table_ww4_gvb_4t}  

    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) {#ariaid-title5}

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.
{#r_DC-calcRelativeDuration_S__table_rw4_gvb_4t__entry__3}

| 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 6. Parâmetros]

{#r_DC-calcRelativeDuration_S__table_rw4_gvb_4t} {#r_DC-calcRelativeDuration_S__table_sw4_gvb_4t__entry__2}

| Tipo | Descrição |
|-|-|
| Booliano | O resultado do script de duração. |
[Tabela 7. Retorna]

{#r_DC-calcRelativeDuration_S__table_sw4_gvb_4t}  

    var dc = new DurationCalculator();
    dc.calcRelativeDuration('08fcd0830a0a1b2600074f56b1ad7cb');

## DurationCalculator - calcScheduleDuration(String startTime, String endTime) {#ariaid-title6}

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.
{#r_DC-calcScheduleDuration_S_S__table_lw4_gvb_4t__entry__3}

| 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 8. Parâmetros]

{#r_DC-calcScheduleDuration_S_S__table_lw4_gvb_4t} {#r_DC-calcScheduleDuration_S_S__table_mw4_gvb_4t__entry__2}

| Tipo | Descrição |
|-|-|
| Número | Duração da programação. Retorna 0 se endTime for anterior startTimea . Unidade: segundos |
[Tabela 9. Retorna]

{#r_DC-calcScheduleDuration_S_S__table_mw4_gvb_4t}  

    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) {#ariaid-title7}

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.
{#r_DC-calcScheduleDuration_GDT_GDT__table_nw4_gvb_4t__entry__3}

| 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 10. Parâmetros]

{#r_DC-calcScheduleDuration_GDT_GDT__table_nw4_gvb_4t} {#r_DC-calcScheduleDuration_GDT_GDT__table_mw4_gvb_4t__entry__2}

| Tipo | Descrição |
|-|-|
| Número | Duração da programação. Retorna 0 se endTime for anterior startTimea . Unidade: segundos |
[Tabela 11. Retorna]

{#r_DC-calcScheduleDuration_GDT_GDT__table_mw4_gvb_4t}  

    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( ) {#ariaid-title8}

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

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 12. Parâmetros]

{#r_DC-getEndDateTime__table_gvv_nlz_nt} {#r_DC-getEndDateTime__table_hvv_nlz_nt__entry__2}

| Tipo | Descrição |
|-|-|
| GlideDateTime | A data/horade término \]. |
[Tabela 13. Retorna]

{#r_DC-getEndDateTime__table_hvv_nlz_nt}  

    var dc = new DurationCalculator();
    dc.calcDuration(52);
    gs.print(dc.getEndDateTime());

2012-04-17 20:57:27

## DurationCalculator - getSeconds() {#ariaid-title9}

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.
{#r_DC-getSeconds__table_ivv_nlz_nt__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 14. Parâmetros]

{#r_DC-getSeconds__table_ivv_nlz_nt} {#r_DC-getSeconds__table_jvv_nlz_nt__entry__2}

| Tipo | Descrição |
|-|-|
| Número | O tempo total de trabalho, em segundos. |
[Tabela 15. Retorna]

{#r_DC-getSeconds__table_jvv_nlz_nt}  

    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() {#ariaid-title10}

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.
{#r_DC-getTotalSeconds__table_qjq_bs1_4t__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 16. Parâmetros]

{#r_DC-getTotalSeconds__table_qjq_bs1_4t} {#r_DC-getTotalSeconds__table_rjq_bs1_4t__entry__2}

| Tipo | Descrição |
|-|-|
| Número | O número total de segundos. |
[Tabela 17. Retorna]

{#r_DC-getTotalSeconds__table_rjq_bs1_4t}  

    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) {#ariaid-title11}

Compara o tempo passado com o valor de tempo no objeto GlideDateTime passado.
{#r_DC-isAfter_GDT_S__table_tw4_gvb_4t__entry__3}

| 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 18. Parâmetros]

{#r_DC-isAfter_GDT_S__table_tw4_gvb_4t} {#r_DC-isAfter_GDT_S__table_uw4_gvb_4t__entry__2}

| 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. |
[Tabela 19. Retorna]

{#r_DC-isAfter_GDT_S__table_uw4_gvb_4t}  

    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) {#ariaid-title12}

Define a programação e o fuso horário a serem usados para calcular a data de vencimento.
{#r_DC-setSchedule_S_S__table_y5v_nlz_nt__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| schedId | Cadeia de caracteres | Sys_id da programação a ser definida. Localizado na 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 20. Parâmetros]

{#r_DC-setSchedule_S_S__table_y5v_nlz_nt} {#r_DC-setSchedule_S_S__table_z5v_nlz_nt__entry__2}

| Tipo | Descrição |
|-|-|
| vazio |   |
[Tabela 21. Retorna]

{#r_DC-setSchedule_S_S__table_z5v_nlz_nt}  

    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) {#ariaid-title13}

Define a data e a hora de início dos cálculos de duração.
{#r_DC-setStartDateTime_S__table_cvv_nlz_nt__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| iniciar | Cadeia de caracteres | Valor de exibição da hora de início em GMT para cálculos subsequentes. |
[Tabela 22. Parâmetros]

{#r_DC-setStartDateTime_S__table_cvv_nlz_nt} {#r_DC-setStartDateTime_S__table_dvv_nlz_nt__entry__2}

| Tipo | Descrição |
|-|-|
| vazio |   |
[Tabela 23. Retorna]

{#r_DC-setStartDateTime_S__table_dvv_nlz_nt}  

    var dc = new DurationCalculator();
    dc.setStartDateTime("2020-04-10 08:00:00")

## DurationCalculator - setStartDateTime(descrição de GlideDateTime) {#ariaid-title14}

Define a data e a hora de início dos cálculos de duração.
{#r_DC-setStartDateTime_GDT_N__table_evv_nlz_nt__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| descrição | GlideDateTime | Objeto GlideDateTime que contém a hora de início em GMT para cálculos subsequentes. |
[Tabela 24. Parâmetros]

{#r_DC-setStartDateTime_GDT_N__table_evv_nlz_nt} {#r_DC-setStartDateTime_GDT_N__table_fvv_nlz_nt__entry__2}

| Tipo | Descrição |
|-|-|
| vazio |   |
[Tabela 25. Retorna]

{#r_DC-setStartDateTime_GDT_N__table_fvv_nlz_nt}  

    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) {#ariaid-title15}

Define o fuso horário a ser usado para calcular a data de vencimento.
{#r_DC-setTimeZone_S__table_avv_nlz_nt__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| fuso horário | Cadeia de caracteres | Valor do fuso horário. |
[Tabela 26. Parâmetros]

{#r_DC-setTimeZone_S__table_avv_nlz_nt} {#r_DC-setTimeZone_S__table_bvv_nlz_nt__entry__2}

| Tipo | Descrição |
|-|-|
| vazio |   |
[Tabela 27. Retorna]

{#r_DC-setTimeZone_S__table_bvv_nlz_nt}  

    var dc = new DurationCalculator();
    dc.setTimeZone("Los Angeles");


