mirror of
https://github.com/vlang/v.git
synced 2025-09-13 14:32:26 +03:00

Some checks are pending
Graphics CI / gg-regressions (push) Waiting to run
vlib modules CI / build-module-docs (push) Waiting to run
native backend CI / native-backend-windows (push) Waiting to run
native backend CI / native-backend-ubuntu (push) Waiting to run
Shy and PV CI / v-compiles-puzzle-vibes (push) Waiting to run
Sanitized CI / sanitize-undefined-clang (push) Waiting to run
Sanitized CI / sanitize-undefined-gcc (push) Waiting to run
Sanitized CI / tests-sanitize-address-clang (push) Waiting to run
Sanitized CI / sanitize-address-msvc (push) Waiting to run
Sanitized CI / sanitize-address-gcc (push) Waiting to run
Sanitized CI / sanitize-memory-clang (push) Waiting to run
sdl CI / v-compiles-sdl-examples (push) Waiting to run
Time CI / time-linux (push) Waiting to run
Time CI / time-macos (push) Waiting to run
Time CI / time-windows (push) Waiting to run
toml CI / toml-module-pass-external-test-suites (push) Waiting to run
Tools CI / tools-linux (clang) (push) Waiting to run
Tools CI / tools-linux (gcc) (push) Waiting to run
Tools CI / tools-linux (tcc) (push) Waiting to run
Tools CI / tools-macos (clang) (push) Waiting to run
Tools CI / tools-windows (gcc) (push) Waiting to run
Tools CI / tools-windows (msvc) (push) Waiting to run
Tools CI / tools-windows (tcc) (push) Waiting to run
Tools CI / tools-docker-ubuntu-musl (push) Waiting to run
vab CI / vab-compiles-v-examples (push) Waiting to run
vab CI / v-compiles-os-android (push) Waiting to run
wasm backend CI / wasm-backend (ubuntu-22.04) (push) Waiting to run
wasm backend CI / wasm-backend (windows-2022) (push) Waiting to run
27 lines
900 B
V
27 lines
900 B
V
module time
|
|
|
|
// operator `==` returns true if provided time is equal to time
|
|
@[inline]
|
|
pub fn (t1 Time) == (t2 Time) bool {
|
|
return t1.is_local == t2.is_local && t1.local_unix() == t2.local_unix()
|
|
&& t1.nanosecond == t2.nanosecond
|
|
}
|
|
|
|
// operator `<` returns true if provided time is less than time
|
|
@[inline]
|
|
pub fn (t1 Time) < (t2 Time) bool {
|
|
t1u := t1.unix()
|
|
t2u := t2.unix()
|
|
return t1u < t2u || (t1u == t2u && t1.nanosecond < t2.nanosecond)
|
|
}
|
|
|
|
// Time subtract using operator overloading.
|
|
@[inline]
|
|
pub fn (lhs Time) - (rhs Time) Duration {
|
|
// lhs.unix * 1_000_000_000 + i64(lhs.nanosecond) will overflow i64, for years > 3000 .
|
|
// Doing the diff first, and *then* multiplying by `second`, is less likely to overflow,
|
|
// since lhs and rhs will be likely close to each other.
|
|
unixs := i64(lhs.unix() - rhs.unix()) * second
|
|
nanos := lhs.nanosecond - rhs.nanosecond
|
|
return unixs + nanos
|
|
}
|