参考链接:https://blog.youkuaiyun.com/hittata/article/details/8090228
- time函数获得日历时间。日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。
#include <time.h>
#include <stdio.h>
int main(void)
{
time_t t;
t=time(NULL);
//time(&t);效果一样
printf("The number of seconds since January 1, 1970 is %ld",t);
return 0;
}
mktime:转换成time_t时间结构
#include<iostream>
#include <ctime>
using namespace std;
int main() {
struct tm t1 = { 0 };
struct tm t2 = { 0 };
int seconds;
int a,b,c,d;
cin>>a>>b>>c>>d;
t1.tm_hour=a;
t1.tm_min=b;
t2.tm_hour=c;
t2.tm_min=d;
seconds = difftime(mktime(&t2), mktime(&t1));//转换结构体为time_t,利用difftime,计算时间差
if(seconds<=0){
seconds+=86400;
}
int hour=seconds/3600;
int min=(seconds%3600)/60;
printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)\n",hour,min);
return 0;
}
linux 时间格式化函数strftime和strptime使用
这两个函数都是时间日期的格式控制函数,在功能上看起来正好相反。strftime将一个struct tm结构格式化为一个字符串,strptime则是将一个字符串格式化为一个struct tm结构
#include <time.h>
#include <stdio.h>
#include <string.h>
int main() {
struct tm tm;
char buf[255];
strptime("24/Aug/2011:09:42:35", "%d/%b/%Y:%H:%M:%S" , &tm);
printf("asctime:%s\n",asctime(&tm));
memset(buf,0,sizeof(buf));
strftime(buf, sizeof(buf), "%d %b %Y %H:%M", &tm);
puts(buf);
return 0;
}