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

时间:2011-05-24 02:53:21

标签: date time epoch

我正在尝试编写一个转换时间和功能的函数。日期到纪元秒,这是一个没有通常的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;
}

1 个答案:

答案 0 :(得分:2)

可能有一个错误,如果你在2月29日之前没有加入闰日,你就不会考虑。但我不确定这是否是唯一的错误。

编辑:我想我发现了第二个错误:你整天都在添加。您应该添加1天到1天,因为1月1日的08:00从月初开始只有8个小时而不是24 + 8小时。