v/vlib/time
2024-06-09 10:19:52 +03:00
..
misc time: update unix time acces, fix issues related to deviating unix times (#21293) 2024-04-17 00:33:37 +03:00
chrono.c.v time: change days_from_civil to days_from_unix_epoch, add date_from_days_after_unix_epoch (#16363) 2022-11-13 14:30:14 +02:00
chrono.v time: rename identifiers and parameter names (#20913) 2024-02-27 03:09:24 +02:00
chrono_test.v vfmt: change all '$expr' to '${expr}' (#16428) 2022-11-15 16:53:13 +03:00
custom_format_test.v time: add 'i', 'ii' in custom_format() for 12-hours clock(0-12-1-11) (#19083) 2023-08-08 12:25:39 +03:00
date_time_parser.v time: update unix time acces, fix issues related to deviating unix times (#21293) 2024-04-17 00:33:37 +03:00
duration.v time: fix the string representation of a negative Duration (#21407) 2024-05-03 17:51:42 +03:00
duration_test.v time: fix the string representation of a negative Duration (#21407) 2024-05-03 17:51:42 +03:00
format.v time: update unix time acces, fix issues related to deviating unix times (#21293) 2024-04-17 00:33:37 +03:00
operator.v time: update unix time acces, fix issues related to deviating unix times (#21293) 2024-04-17 00:33:37 +03:00
operator_test.v time: update unix time acces, fix issues related to deviating unix times (#21293) 2024-04-17 00:33:37 +03:00
parse.c.v time: update unix time acces, fix issues related to deviating unix times (#21293) 2024-04-17 00:33:37 +03:00
parse.js.v time: update doc comments (#18947) 2023-07-22 21:30:36 +03:00
parse.v all: update copyright year (#20334) 2024-01-01 23:29:54 +02:00
parse_test.v time: update unix time acces, fix issues related to deviating unix times (#21293) 2024-04-17 00:33:37 +03:00
private_test.c.v sync,szip,term,time,x.ttf: prepare for making -W impure-v the default (#19929) 2023-11-19 18:33:07 +02:00
README.md checker: turn warnings for private fields into errors (#21296) 2024-06-09 10:19:52 +03:00
relative_test.v
stopwatch.v breaking,checker: disallow initializing private struct fields outside structs module (#21183) 2024-04-12 13:53:02 +03:00
stopwatch_test.v
time.c.v time: update unix time acces, fix issues related to deviating unix times (#21293) 2024-04-17 00:33:37 +03:00
time.js.v time: update unix time acces, fix issues related to deviating unix times (#21293) 2024-04-17 00:33:37 +03:00
time.v time: update unix time acces, fix issues related to deviating unix times (#21293) 2024-04-17 00:33:37 +03:00
time_addition_test.v time: store time with nanosecond resolution in time.Time, deprecate Time.microsecond, add utility methods and tests (#19062) 2023-08-05 23:41:23 +03:00
time_darwin.c.v all: update attributes to use new syntax 2023-11-15 16:16:01 +11:00
time_format_test.v time: update unix time acces, fix issues related to deviating unix times (#21293) 2024-04-17 00:33:37 +03:00
time_js.js.v time: update doc comments (#18947) 2023-07-22 21:30:36 +03:00
time_linux.c.v time: reduce the diff for v run cmd/tools/check_os_api_parity time 2023-07-31 11:02:10 +03:00
time_nix.c.v time: make C._FILETIME and C.tm fields pub mut 2024-05-21 18:54:06 +03:00
time_solaris.c.v time: store time with nanosecond resolution in time.Time, deprecate Time.microsecond, add utility methods and tests (#19062) 2023-08-05 23:41:23 +03:00
time_test.c.v vlib: make ./v -Wimpure-v -W test vlib/ pass on Linux (#21554) 2024-05-23 16:21:01 +03:00
time_test.v checker: turn warnings for private fields into errors (#21296) 2024-06-09 10:19:52 +03:00
time_windows.c.v time: make C._FILETIME and C.tm fields pub mut 2024-05-21 18:54:06 +03:00
unix.v time: cleanup module (#21217) 2024-04-09 14:05:14 +03:00
utc_vs_local_time_test.v time: add more UTC/local time conversion functions, make Time.format_rfc3339 more stable 2022-12-11 13:34:01 +02:00
Y2K38_test.v

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

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')
}