0 branches
Tree Top files
Code
Clone with HTTPS:
56 years ago
..
format.v all: super_batch6 fixes last Apr 17 22.82 KB
parse.c.v all: super_batch3 fixes last Apr 13 17.77 KB
time_test.v all: fix tests last Apr 24 13.66 KB
unix.v all: super_batch3 fixes last Apr 13 3.75 KB

Description

V's time module, provides utilities for working with time and dates:

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