/*
获取自然日之差
mktime()用来将tm转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数
*/
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
char cdateX[9] = "20150406";
char cdateY[9] = "20150404";
long int ldays = 0;
int idateX = atoi(cdateX);
int iyearX = idateX/10000;
int imonX = idateX/100 - iyearX*100;
int idayX = idateX - idateX/100*100;
int idateY = atoi(cdateY);
int iyearY = idateY/10000;
int imonY = idateY/100 - iyearY*100;
int idayY = idateY - idateY/100*100;
struct tm tx; //struct tm是在标准库中就定义好的结构体
struct tm ty;
time_t daysx;
time_t daysy;
tx.tm_year = iyearX - 1900; //年 以1900年为基线
tx.tm_mon = imonX; //月
tx.tm_mday = idayX; //日
tx.tm_hour = 0; //时
tx.tm_min = 0; //分
tx.tm_sec = 0; //秒
tx.tm_isdst = 0; //夏令时
daysx = mktime(&tx);
ty.tm_year = iyearY - 1900; //年 以1900年为基线
ty.tm_mon = imonY; //月
ty.tm_mday = idayY; //日
ty.tm_hour = 0; //时
ty.tm_min = 0; //分
ty.tm_sec = 0; //秒
ty.tm_isdst = 0; //夏令时
daysy = mktime(&ty);
ldays = (daysx - daysy)/(60*60*24);
printf("%d %d %d \n",iyearY,imonY,idayY);
printf("%d %d %d \n",iyearX,imonX,idayX);
printf("%s 与 %s 相差%ld 天 \n",cdateX,cdateY,ldays);
getchar();
return 0;
}
获取自然日之差
最新推荐文章于 2021-11-08 21:51:39 发布