aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSan Jacobs2025-11-10 19:47:31 +0100
committerSan Jacobs2025-11-10 19:47:31 +0100
commit3fd7d818b53fe80fb521fd24c024f27f38fcc7bd (patch)
tree7f534c6f0ebb9aee336718d0bb0b63da01c578f0
parent0f0521166eb6f8653ed37fd1e6e695fc17200db8 (diff)
downloadstatics-3fd7d818b53fe80fb521fd24c024f27f38fcc7bd.tar.gz
statics-3fd7d818b53fe80fb521fd24c024f27f38fcc7bd.tar.bz2
statics-3fd7d818b53fe80fb521fd24c024f27f38fcc7bd.zip
Better accuracyHEADmaster
-rw-r--r--main.odin28
-rw-r--r--time.odin8
2 files changed, 23 insertions, 13 deletions
diff --git a/main.odin b/main.odin
index 1cd4b7d..0d57e34 100644
--- a/main.odin
+++ b/main.odin
@@ -6,6 +6,7 @@ import "core:strings"
import "core:strconv"
import "core:sys/windows"
+
dayrate : f64 = 3500
Arg_Type :: enum {
@@ -117,7 +118,7 @@ main :: proc() {
}
- total_hours : f64 = 0;
+ total_minutes : int = 0;
fmt.println()
@@ -129,7 +130,7 @@ main :: proc() {
timeblocks, ok := importICS(os.args[i])
if ok {
- hours : f64 = 0
+ minutes : int = 0
for each_block in timeblocks {
if verbose do fmt.println("Block:", timeblockToString(each_block))
pass := true
@@ -153,16 +154,17 @@ main :: proc() {
if verbose do if !pass_substring do fmt.println(" └ FILTERED! By Substring filter.")
pass &= pass_substring
}
- //if verbose do fmt.printf("\n")
if !pass do continue
- hours += f64(hourcount(each_block))
+ minutes += minutecount(each_block)
}
- minutes := int(f64(hours-f64(int(hours)))*60.0)
+ display_minutes : int = minutes%60
+ display_hours : int = (minutes-display_minutes)/60
+ display_hour_count : f64 = f64(minutes)/60
fmt.printf(" Hour count: %f\nHours & Minutes: %02d:%02d\n\n",
- hours, int(hours), minutes)
- total_hours += hours
+ display_hour_count, display_hours, display_minutes)
+ total_minutes += minutes
} else {
// Noffin i guess
fmt.printf("\n\n")
@@ -171,14 +173,14 @@ main :: proc() {
fmt.printf("\nTOTAL\n\n")
- total_final_hour_fraction : f64 = total_hours - f64(int(total_hours));
-
- total_minutes := int(total_final_hour_fraction*60.0)
+ display_minutes : int = total_minutes%60
+ display_hours : int = (total_minutes-display_minutes)/60
+ display_hour_count : f64 = f64(total_minutes)/60
- fmt.printf(" Hour count: %f\nHours & Minutes: %02d:%02d\n",
- total_hours, int(total_hours), total_minutes)
+ fmt.printf(" Hour count: %f\nHours & Minutes: %02d:%02d\n\n",
+ display_hour_count, display_hours, display_minutes)
- return
+ os.exit(0)
}
diff --git a/time.odin b/time.odin
index 2cdbe72..dbe79a2 100644
--- a/time.odin
+++ b/time.odin
@@ -769,6 +769,14 @@ hourcount :: proc(block: Timeblock) -> f32 {
f32(hours) +
f32(days) * 24)
}
+minutecount :: proc(block: Timeblock) -> int {
+ using block
+ delta: Delta = diff(end, start)
+ using delta
+ return (minutes) +
+ (hours*60) +
+ (days*24*60)
+}
daycount :: proc(delta: Delta) -> f32 {
using delta