#include <stdio.h>
static long dpm[]
= {0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
int main()
{
unsigned long Y, M, D, h, m, s;
puts("YYYY MM DD hh:mm:ss");
scanf("%lu %lu %lu %lu:%lu:%lu", &Y, &M, &D, &h, &m, &s);
if (M > 12 || Y < 1970 || h > 23 || m > 59 || s > 59) {
return 1;
}
--D;
D += dpm[M];
if ((Y & 3) == 0 && ((Y % 100) != 0 || (Y % 400) == 0)) {
if (M > 2) {
D += 1;
}
}
D += (Y - 1970) * 365;
if (Y > 1972) {
D += (Y - 1972) >> 2;
D += (((Y - 1972) & 3) && 1);
if (Y > 2000) {
D -= (Y - 2000) / 100;
D -= ((Y - 2000) % 100) && 1;
D += (Y - 2000) / 400;
D += ((Y - 2000) % 400) && 1;
}
}
printf("%ld\n", D * 86400 + h * 3600 + m * 60 + s);
return 0;
}
網頁
▼
2019年7月8日 星期一
【C程式設計】Unix時間計算
這個程式可以把年月日時分秒轉換為Unix Time(又稱POSIX Time,從1970年1月1日開始計算的秒數,不含閏秒)。