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);
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);
#include <stdio.h>
#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)