这是基于C++进行获取时间戳计算日期差值的一个程序
身为初学者,在这里记录一些自己学习中所获得的一些小知识,仅此而已。这个程序主要是加深对struct tm的理解和mktime函数的一些理解,mktime函数后面只能跟struct tm类型的变量,然后就是一些其他要注意的东西都在代码注释里有讲到。
这是主要代码基于c++
#include<iostream>//主要头文件
#include<time.h>//包含struct tm 结构体,mktime 函数
using namespace std;
int main() {
int a, b, c, d, e, f, n;
struct tm y2k = { 0 };
struct tm y1k = { 0 };//初始化
double seconds;
cout << "请输入日期1:" << endl;
cin >> a >> b >> c;
cout << "请输入日期2" << endl;
cin >> d >> e >> f;
y2k.tm_year = a-1900;//年份必须是1900年之后
y2k.tm_mon = b-1;//月份的取值范围为【0,11】
y2k.tm_mday = c;//日期取值范围为【1,31】
y1k.tm_year = d-1900;
y1k.tm_mon = e-1;
y1k.tm_mday = f;
if (a > d)
seconds = difftime(mktime(&y2k), mktime(&y1k));//前面的时间戳要大于后面的时间戳作为end
if (a < d)
seconds = difftime(mktime(&y1k), mktime(&y2k));
if (a == d) {
if(b > e) seconds = difftime(mktime(&y2k), mktime(&y1k));
if(b < e) seconds = difftime(mktime(&y1k), mktime(&y2k));
if (b == e) {
if(c > f) seconds = difftime(mktime(&y2k), mktime(&y1k));
if(c < f) seconds = difftime(mktime(&y1k), mktime(&y2k));
if (c == f) seconds = difftime(mktime(&y2k), mktime(&y1k));
}
}
n = (int)seconds / 86400;//一天有86400秒
printf("%d", n);
return 0;
}