From 21b54723e49e4edf22cc07f57c3bb68281b8a0b4 Mon Sep 17 00:00:00 2001 From: vitalyster Date: Tue, 4 Feb 2020 14:17:04 +0300 Subject: [PATCH] time: fix timezone --- vlib/time/time.v | 2 +- vlib/time/time_nix.v | 10 ++++++---- vlib/time/time_test.v | 1 + vlib/time/time_windows.v | 9 ++++++--- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/vlib/time/time.v b/vlib/time/time.v index 3247414b8c..2688ab4b5d 100644 --- a/vlib/time/time.v +++ b/vlib/time/time.v @@ -252,7 +252,7 @@ pub fn (t &Time) calc_unix() int { tm_mon: t.month - 1 tm_year: t.year - 1900 } - return C.mktime(&tt) + return make_unix_time(tt) } // TODO add(d time.Duration) diff --git a/vlib/time/time_nix.v b/vlib/time/time_nix.v index 9e3d182a6c..fc8aad8d58 100644 --- a/vlib/time/time_nix.v +++ b/vlib/time/time_nix.v @@ -21,9 +21,11 @@ pub fn convert_ctime(t tm) Time { hour: t.tm_hour minute: t.tm_min second: t.tm_sec - unix: C.mktime(&t) - }.add_seconds(t.tm_gmtoff) + unix: make_unix_time(t) + } } - - +[inline] +fn make_unix_time(t tm) int { + return C.mktime(&t) + t.tm_gmtoff +} diff --git a/vlib/time/time_test.v b/vlib/time/time_test.v index a742bec072..01dc2b280f 100644 --- a/vlib/time/time_test.v +++ b/vlib/time/time_test.v @@ -179,6 +179,7 @@ fn test_add_days() { num_of_days := 3 t := time_to_test.add_days(num_of_days) assert t.day == time_to_test.day + num_of_days + assert t.unix == time_to_test.unix + 86400 * num_of_days } fn test_get_fmt_time_str() { diff --git a/vlib/time/time_windows.v b/vlib/time/time_windows.v index 443255df94..532d98f196 100644 --- a/vlib/time/time_windows.v +++ b/vlib/time/time_windows.v @@ -10,7 +10,6 @@ struct C.tm { tm_hour int tm_min int tm_sec int - //tm_gmtoff int // seconds } pub fn convert_ctime(t tm) Time { @@ -21,7 +20,11 @@ pub fn convert_ctime(t tm) Time { hour: t.tm_hour minute: t.tm_min second: t.tm_sec - unix: C.mktime(&t) - }//.add_seconds(t.tm_gmtoff) + unix: make_unix_time(t) + } } +[inline] +fn make_unix_time(t tm) int { + return C.mktime(&t) - C._timezone +}