From 8a4c25bd806033db0bd2c0a7cc17b1d516f29dbe Mon Sep 17 00:00:00 2001 From: Gergely Polonkai Date: Thu, 19 May 2022 08:33:29 +0200 Subject: [PATCH] [Bugfix] Calculate the current UTC hour in a more safe way This should now work in any time zone from -12:00 to +12:00, any time of the day. --- src/main.rs | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/main.rs b/src/main.rs index 8e483c3..135d581 100644 --- a/src/main.rs +++ b/src/main.rs @@ -55,16 +55,6 @@ fn time_to_degrees(timestamp: i32, // should be time/timestamp seconds_to_degrees(timestamp) } -fn seconds_to_hms(seconds: i32) -> (i32, i32, i32) { - let mut secs = seconds; - let hours = secs / 3600; - secs -= hours * 3600; - let minutes = secs / 60; - secs -= minutes * 60; - - (hours, minutes, secs) -} - fn hour_name_path(image_width: u32, outer_r: f32, ring_width: f32) -> Path { let radius = outer_r - ring_width / 2.0; let delta_x = radius * (15.0_f32.to_radians() / 2.0).sin(); @@ -249,6 +239,11 @@ fn get_moon_path(image_width: u32, radius: f32, moon_phase: f64) -> Path { fn gen_svg() -> Document { let local_timestamp = Local::now(); + let utc_hour = local_timestamp.with_timezone(&Utc).time().hour(); + let local_hour = local_timestamp.time().hour(); + let local_minute = local_timestamp.time().minute(); + let local_second = local_timestamp.time().second(); + let utc_offset = local_timestamp.offset().local_minus_utc(); let local_time = local_timestamp.time().num_seconds_from_midnight() as i32; let utc_rotation = seconds_to_degrees(utc_offset); @@ -408,7 +403,7 @@ fn gen_svg() -> Document { "transform", format!( "rotate({}, {}, {})", - time_to_degrees(local_time) - time_to_degrees(utc_offset), + time_to_degrees(local_time) - utc_rotation, image_width / 2, image_width / 2 ), @@ -519,10 +514,6 @@ fn gen_svg() -> Document { image_width as f32 / 2.0 + outer_r - ring_width + hour_name_font_size, ); - let utc_now = local_time - utc_offset; - let utc_hour = utc_now / 3600; - let (local_hour, local_minute, local_second) = seconds_to_hms(local_time); - let current_box_width = (200f32 / 700f32) * image_width as f32; let current_box_height = (100f32 / 700f32) * image_width as f32; let current_hour_name_font_size = (40f32 / 700f32) * image_width as f32;