第一种方法,可以直接使用date命令获取 date +%s -d '2017-1-1 12:30:00' 值得注意的是,这个秒数带了时区计算,所以得额外判断时区
写C函数计算
#define is_leap_year(y) (((y) % 4 == 0 && (y) % 100 != 0) || (y) % 400 == 0) /* 计算某个日期距1970年1月1日0时0分0秒的秒数 */ time_t calc_sec1970(int Y, int M, int D, int h, int m, int s) { int i = 0; int sec = 0; int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; /* 年计算 */ for(i = 1970; i < Y; i++) { if(is_leap_year(i)) sec += 366 * 24 * 60 * 60; else sec += 365 * 24 * 60 * 60; } /* 月计算 */ for(i = 1; i < M; i++) { sec += days[i] * 24 * 60 * 60; if(i == 2 && is_leap_year(Y)) { sec += 24 * 60 * 60; } } /* 天计算 */ sec += (D - 1) * 24 * 60 * 60; /* 时分秒计算 */ sec += h * 60 * 60 + m * 60 + s; return sec; }还有一个网站可以计算两个时间的时间差:http://www.zhongguosou.com/education_graduate_course_tools/time_date_difference.html