Pular para o conteúdo

22 · Expressões Temporais

Aritmética com Durações

Soma, subtração, multiplicação e divisão entre durações; comparações diretas.

Nesta página

Como durações são simplesmente i64, os operadores +, -, * e / funcionam sem conversões. Isso torna composições como ttl = 2h + 30min ou intervalo * 2 idiomáticas e imediatas.

Soma combina durações independentes em um total:

Composição de durações, "tempo restante", escala por escalar, fração de intervalo e comparações com == e >.

02-arithmetic.zolo
Playground
// Feature: arithmetic between durations
// Syntax: `+ - * /` work directly between literals and durations
// When to use: compose durations (ttl = 2h + 30min), scale (interval
// * 2), slice (timeout / 4). Since everything is `i64 ms` underneath,
// nothing is surprising.

// Sum of durations.
let ttl = 7200000 + 1800000 + 45000
print(ttl)

// expected: 9045000

// Subtraction — useful for "remaining time".
let limit = 3600000
let spent = 900000
let remaining = limit - spent
print(remaining)

// expected: 2700000   (45min in ms)

// Multiplication by scalar — scaling intervals.
let interval = 30000
let twice = interval * 2
print(twice)

// expected: 60000

// Division by scalar — slices.
let total = 3600000
let quarter = total / 4
print(quarter)

// expected: 900000   (15min in ms)

// Comparisons — work because both are numbers.
let a = 1000
let b = 1000
if a == b {
  print("1s == 1000ms")
}

// expected: 1s == 1000ms

if 300000 > 30000 {
  print("minutes > seconds")
}
// expected: minutes > seconds

Comparações também funcionam naturalmente: elapsed > 5s é equivalente a elapsed > 5000. Não há sobrecarga de operador — é aritmética inteira comum.

Desafio

Calcule quanto tempo falta para completar 2 horas sabendo que já passaram 45min + 20s. Imprima o resultado em milissegundos.

Índice global

Encontre seu caminho pela Zolo

Experimente uma ideia

Comece por aqui

9 resultados

9 resultados

enespt-br