将时间/日期转换为纪元(自1970年以来的秒数)

|| 我正在尝试编写一个将时间和日期转换为纪元秒的函数,这是针对没有常规time_t库函数的小型系统。我在下面有此代码,但是计算有些偏离,任何人都可以看到问题在哪里吗?
long getSecondsSinceEpoch(int h, int m, int s, int day, int month, int year) {
    int i,leapDays;
    long days;
    long seconds;

    const static DAYS_IN_MONTH[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    leapDays = 0;
    days = (year - 1970) * 365;

    for (i = year; i>1970; i--){
        if ((i%4)==0) {
            leapDays++;
        }
    }
    days += leapDays;
    for (i = 1;i < month;i++) {
        days += DAYS_IN_MONTH[i - 1];
    }
    days += day;
    seconds = days * 86400;

    seconds += (h * 3600);
    seconds += (m * 60);
    seconds += s;

    return seconds;
}
    
已邀请:
一个错误可能是,添加adding日时,您是否没有考虑是否在2月29日之前。但是我不确定这是否是唯一的错误。 编辑:我想我发现了第二个错误:您整天都添加。您应该在第1天加上1天,因为1月1日的08:00距离月初只有8个小时,而不是24到8个小时。     

要回复问题请先登录注册