time: `-` operator overloading (#7259)
parent
d319fe14f0
commit
a2f7e0636d
|
@ -348,6 +348,13 @@ pub fn (t Time) str() string {
|
||||||
return t.format_ss()
|
return t.format_ss()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Time subtract using eperator overloading
|
||||||
|
pub fn (lhs Time) -(rhs Time) Duration {
|
||||||
|
lhs_micro := lhs.unix * 1000 * 1000 + u64(lhs.microsecond)
|
||||||
|
rhs_micro := rhs.unix * 1000 * 1000 + u64(rhs.microsecond)
|
||||||
|
return (i64(lhs_micro) - i64(rhs_micro)) * microsecond
|
||||||
|
}
|
||||||
|
|
||||||
fn convert_ctime(t C.tm, microsecond int) Time {
|
fn convert_ctime(t C.tm, microsecond int) Time {
|
||||||
return Time{
|
return Time{
|
||||||
year: t.tm_year + 1900
|
year: t.tm_year + 1900
|
||||||
|
|
|
@ -164,6 +164,20 @@ fn test_str() {
|
||||||
assert '1980-07-11 21:23:42' == time_to_test.str()
|
assert '1980-07-11 21:23:42' == time_to_test.str()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn test_subtract() {
|
||||||
|
d_seconds := 3
|
||||||
|
d_microseconds := 13
|
||||||
|
duration := d_seconds * time.second + d_microseconds * time.microsecond
|
||||||
|
t1 := time_to_test
|
||||||
|
t2 := time.unix2(int(t1.unix) + d_seconds, t1.microsecond + d_microseconds)
|
||||||
|
d1 := t2 - t1
|
||||||
|
d2 := t1 - t2
|
||||||
|
assert d1 > 0
|
||||||
|
assert d1 == duration
|
||||||
|
assert d2 < 0
|
||||||
|
assert d2 == -duration
|
||||||
|
}
|
||||||
|
|
||||||
// not optimal test but will find obvious bugs
|
// not optimal test but will find obvious bugs
|
||||||
fn test_now() {
|
fn test_now() {
|
||||||
now := time.now()
|
now := time.now()
|
||||||
|
|
Loading…
Reference in New Issue