Как насчет:
struct tm tm = {
.tm_sec = sec,
.tm_min = min,
...
};
time_t t = mktime(&tm);
printf("%ju\n", (uintmax_t) t);
Как Mppl указывает, прежде чем использовать это, вы должны быть осведомлены о причудах struct tm
:
tm_mon
определяется как месяцев с января, так что вы необходимо вычесть 1 из месяца
tm_year
определяется как лет с 1900 года, так что вам нужно вычесть 1900 из года
В более педантичной боковой ноте, ничего не гарантирует преобразование т в целое число будет автоматически даст вам количество секунд с 1970 года работает на многих системах, но стандарт не предусматривает этого.
Если вы хотите пойти стандартный ум вы могли бы сделать еще один time_t
представляющий 1970
, а затем сделать difftime
между двумя: вы получите разницу в качестве простого честного double
.
Это именно то, что я хочу сказать :) vote ~ – noalac
По какой-то причине он отлично работал с -1970. – David