0 branches
Tree
Top files
Clone with HTTPS:
misc
fmt: remove the prefixed module name of const names, that are in the same module (related #22183) (#22185)
1 year ago
673 bytes
chrono.c.v
docs: check vlib/time too in the report-missing-dots-in-doc-comments job
last Jul 21
547 bytes
operator.v
time: move the nanosecond comparison before the rest in the Time == Time implementation
last Sep 5
900 bytes
operator_test.v
time,hash,rand: tag more functions with an explicit @[ignore_overflow] or with explicit casts (where needed)
last Oct 10
6.52 KB
parse.js.v
time: add documentation for remaining time-related functions and ISO 8601 parsing (#23867)
1 year ago
1.02 KB
parse_autofree_test.v
autofree: disable leak detection in some tests for now (#26748)
last Mar 19
449 bytes
stopwatch_internal_test.v
time: fix elapsed time occasionally printing 0ns (fixes #18132)
last Mar 25
162 bytes
time.js.v
time: add documentation for remaining time-related functions and ISO 8601 parsing (#23867)
1 year ago
1.91 KB
time_addition_test.v
time: store time with nanosecond resolution in time.Time, deprecate Time.microsecond, add utility methods and tests (#19062)
2 years ago
754 bytes
time_format_test.v
time: implement faster and simpler `push_http_header` (#26155)
last Dec 28
3.22 KB
time_linux.c.v
time: reduce the diff for `v run cmd/tools/check_os_api_parity time`
2 years ago
548 bytes
time_test.c.v
time: always return utc() timezone for Time.unix/0 (fix #17784) (#25233)
last Sep 4
429 bytes
time_windows.c.v
all: replace `int` with `i32` in `fn C.name(x int) int` declarations (#26522)
last Feb 7
5.58 KB
Description
V's time module, provides utilities for working with time and dates:
- parsing of time values expressed in one of the commonly used standard time/date formats
- formatting of time values
- arithmetic over times/durations
- converting between local time and UTC (timezone support)
- stop watches for accurately measuring time durations
- sleeping for a period of time
Examples
You can see the current time. See:
import time
println(time.now())
time.Time values can be compared, see:
import time
const time_to_test = time.Time{
year: 1980
month: 7
day: 11
hour: 21
minute: 23
second: 42
nanosecond: 123456789
}
println(time_to_test.format())
assert '1980-07-11 21:23' == time_to_test.format()
assert '1980-07-11 21:23:42' == time_to_test.format_ss()
assert '1980-07-11 21:23:42.123' == time_to_test.format_ss_milli()
assert '1980-07-11 21:23:42.123456' == time_to_test.format_ss_micro()
assert '1980-07-11 21:23:42.123456789' == time_to_test.format_ss_nano()
You can also parse strings to produce time.Time values, see:
import time
s := '2018-01-27 12:48:34'
t := time.parse(s) or { panic('failing format: ${s} | err: ${err}') }
println(t)
println(t.unix())
V's time module also has these parse methods:
fn parse(s string) !Time
fn parse_iso8601(s string) !Time
fn parse_rfc2822(s string) !Time
fn parse_rfc3339(s string) !Time
time.new(...) validates the provided fields before calculating the Unix timestamp.
Omitted month and day values default to 1, and out-of-range values panic.
Use t.is_zero() to check whether a time.Time is still its zero value before formatting or
serializing it.
Another very useful feature of the time module is the stop watch,
for when you want to measure short time periods, elapsed while you
executed other tasks. See:
import time
fn do_something() {
time.sleep(510 * time.millisecond)
}
fn main() {
sw := time.new_stopwatch()
do_something()
println('Note: do_something() took: ${sw.elapsed().milliseconds()} ms')
}