Example #1
0
Time64_T mktime64(struct TM *input_date) {
    struct tm safe_date;
    struct TM date;
    Time64_T  time;
    Year      year = input_date->tm_year + 1900;

    if( date_in_safe_range(input_date, &SYSTEM_MKTIME_MIN, &SYSTEM_MKTIME_MAX) )
    {
        copy_TM64_to_tm(input_date, &safe_date);
        time = (Time64_T)mktime(&safe_date);

        /* Correct the possibly out of bound input date */
        copy_tm_to_TM64(&safe_date, input_date);
        return time;
    }

    /* Have to make the year safe in date else it won't fit in safe_date */
    date = *input_date;
    date.tm_year = safe_year(year) - 1900;
    copy_TM64_to_tm(&date, &safe_date);

    time = (Time64_T)mktime(&safe_date);

    /* Correct the user's possibly out of bound input date */
    copy_tm_to_TM64(&safe_date, input_date);

    time += seconds_between_years(year, (Year)(safe_date.tm_year + 1900));

    return time;
}
Example #2
0
Time64_T mktime64(const struct TM *input_date) {
    struct tm safe_date;
    struct TM date;
    Time64_T  time_;
    Year      year = input_date->tm_year + 1900;

    if( date_in_safe_range(input_date, &SYSTEM_MKTIME_MIN, &SYSTEM_MKTIME_MAX) )
    {
        copy_TM64_to_tm(input_date, &safe_date);
        return (Time64_T)mktime(&safe_date);
    }

    /* Have to make the year safe in date else it won't fit in safe_date */
    date = *input_date;
    date.tm_year = safe_year(year) - 1900;
    copy_TM64_to_tm(&date, &safe_date);

    time_ = (Time64_T)mktime(&safe_date);

    time_ += seconds_between_years(year, (Year)(safe_date.tm_year + 1900));

    return time_;
}