I'm trying to calculate the difference between two dates (the current date and a date stored in a structure) expressed in hours, minutes and seconds, but when I print the results, it's not being calculated correctly.

Code:
#include <stdio.h>
#include <time.h>

int main(void) {
    struct tm date;
    date.tm_year = 2019 - 1900;
    date.tm_mon = 1 - 1;
    date.tm_mday = 8;
    date.tm_hour = 2;
    date.tm_min = 30;
    date.tm_sec = 0;
    time_t PreviousDate = mktime(&date);
    time_t CurrentDate = time(NULL);
    time_t difference = difftime(CurrentDate, PreviousDate);
    time_t hours, minutes;
    hours = difference / (60*60);
    difference -= difference % (60*60);
    minutes = difference / 60;
    difference -= difference % 60;
    printf("%ld hours, %ld minutes and %ld seconds.\n", hours, minutes, difference);
    return 0;
}
This is what's being shown:
Code:
19 hours, 1140 minutes and 68400 seconds.
Which is not right, because the maximum of minutes and seconds should be 60. It seems the remainder of the conversion to minutes is not working, because 1140 minutes are 19 hours and 68400 seconds are 19 hours.

Could it be that the type time_t can't be operated with integers? If it can't, how should I calculate the difference between those dates?

Thanks in advance.