From a25447645e33ed33a634c829da6a29e558256f44 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Tue, 11 Jun 2024 19:35:03 +0200 Subject: [PATCH] change calc worktime --- src/main.c | 6 +++--- src/time_format.c | 20 ++++++++++++-------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/main.c b/src/main.c index 043a080..be68380 100644 --- a/src/main.c +++ b/src/main.c @@ -25,9 +25,9 @@ int main(int argc, char* argv[]) time(&begin); localtime_r(&begin, &begin_tm); - begin_tm.tm_hour = atoi(argv[1]) + begin_tm.tm_gmtoff / ONE_HOUR; + begin_tm.tm_hour = atoi(argv[1]); begin_tm.tm_min = atoi(argv[2]); - begin = mktime(&begin_tm); + begin = timelocal(&begin_tm); time(&now); localtime_r(&now, &now_tm); @@ -76,7 +76,7 @@ int main(int argc, char* argv[]) work_end_tm.tm_min, work_end_tm.tm_zone); - worktime = get_current_worktime(begin, now) - ONE_HOUR; + worktime = get_current_worktime(begin, now); get_time_str(worktime, timestr); printf("%-25s%s\n", "Aktuelle Arbeitzeit:", timestr); diff --git a/src/time_format.c b/src/time_format.c index 90517ca..06b9edf 100644 --- a/src/time_format.c +++ b/src/time_format.c @@ -1,19 +1,23 @@ #include #include "time_format.h" -void get_time_str(time_t time, char* timestr) +#define ONE_HOUR 3600 +#define MINUTE 60 + +void get_time_str(time_t timediff, char* timestr) { - struct tm time_cal; + int hour = timediff / ONE_HOUR; + int rest_minutes = timediff % ONE_HOUR; + int minutes = rest_minutes / MINUTE; - if (time < 0) { - time *= -1; - gmtime_r(&time, &time_cal); - sprintf(timestr, "-%02d:%02d", time_cal.tm_hour, time_cal.tm_min); + if (timediff < 0) { + hour *= -1; + minutes *= -1; + sprintf(timestr, "-%02d:%02d", hour, minutes); return; } - gmtime_r(&time, &time_cal); - sprintf(timestr, "%02d:%02d", time_cal.tm_hour, time_cal.tm_min); + sprintf(timestr, "%02d:%02d", hour, minutes); } void get_weekday(int wday, char* weekday) -- 2.39.5