1#include "time_impl.h" 2 3long long __tm_to_secs(const struct tm* tm) { 4 int is_leap; 5 long long year = tm->tm_year; 6 int month = tm->tm_mon; 7 if (month >= 12 || month < 0) { 8 int adj = month / 12; 9 month %= 12; 10 if (month < 0) { 11 adj--; 12 month += 12; 13 } 14 year += adj; 15 } 16 long long t = __year_to_secs(year, &is_leap); 17 t += __month_to_secs(month, is_leap); 18 t += 86400LL * (tm->tm_mday - 1); 19 t += 3600LL * tm->tm_hour; 20 t += 60LL * tm->tm_min; 21 t += tm->tm_sec; 22 return t; 23} 24