From 9eb386f102744a497c84fd8aeb237e4cc7bcdc52 Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Thu, 8 Jan 2026 06:00:50 +0200 Subject: [PATCH] time: add Duration.times/1 --- vlib/time/duration.v | 6 ++++++ vlib/time/duration_test.v | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/vlib/time/duration.v b/vlib/time/duration.v index aa2e08034..3afe4474f 100644 --- a/vlib/time/duration.v +++ b/vlib/time/duration.v @@ -120,3 +120,9 @@ pub fn (d Duration) debug() string { } return 'Duration: ${sign}${res.join(', ')}' } + +// times allows you to return fractional unit durations, based on an existing duration. +// For example, you can: `half_an_hour := time.hour.times(0.5)` . +pub fn (d Duration) times(x f64) Duration { + return f64(d) * x +} diff --git a/vlib/time/duration_test.v b/vlib/time/duration_test.v index 87788e10c..d5faa2e80 100644 --- a/vlib/time/duration_test.v +++ b/vlib/time/duration_test.v @@ -45,3 +45,9 @@ fn test_duration_debug() { assert time.Duration(169 * time.hour + 5 * time.minute + 7 * time.second).debug() == 'Duration: 7days, 1h, 5m, 7s' assert (-time.Duration(169 * time.hour + 5 * time.minute + 7 * time.second)).debug() == 'Duration: - 7days, 1h, 5m, 7s' } + +fn test_duration_times() { + assert time.second.times(2) == 2 * time.second + assert time.minute.times(0.5) == 30 * time.second + assert time.minute.times(-1.5) == -90 * time.second +} -- 2.39.5