Windows — 关于时间的操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bailang_zhizun/article/details/79977465

1、通过 localtime_s() 获取当前时间

1)、包含头文件<time.h>

2)、定义两个变量:

    time_t tt;

    struct tm pTM;

3)、获取时间:

    time(&tt);

4)、转换为本地时间:

    localtime_s(&pTm, &tt);

5)、解析时间:

    sprintf(str, "时%d:分%d:秒%d", pTm.tm_hour, pTm.tm_min,pTm.tm_sec);

程序示例如下:

 

#include "stdafx.h"

#include <time.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
	time_t ti_t;
	struct tm s_tm;

	time(&ti_t);
	localtime_s(&s_tm, &ti_t);

	char time_chr[64] = {0};
	sprintf(time_chr, "%d-%d-%d  %d:%d:%d", s_tm.tm_year+1900, s_tm.tm_mon+1, s_tm.tm_mday, s_tm.tm_hour, s_tm.tm_min, s_tm.tm_sec);

	cout << time_chr << endl;
	return 0;
}

之所以要对得到的时间进行处理,是因为struct tm的结构所决定的,struct tm的定义及元素属性如下所示:

struct tm 
{
int tm_sec; /* 秒 – 取值区间为[0,59] */
int tm_min; /* 分 - 取值区间为[0,59] */
int tm_hour; /* 时 - 取值区间为[0,23] */
int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */
int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
int tm_year; /* 年份,其值等于实际年份减去1900 */
int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的时候,tm_isdst为0;不了解情况时,tm_isdst()为负。
long int tm_gmtoff; /*指定了日期变更线东面时区中UTC东部时区正秒数或UTC西部时区的负秒数*/
const char *tm_zone; /*当前时区的名字(与环境变量TZ有关)*/
};

2、通过 clock() 计算时间差

计算时间差可以参考如下所示示例:

#include "stdafx.h"

#include <time.h>
//#include <Windows.h>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	//计时操作
	clock_t start = clock();			// 开始时间

	//Do Something

	clock_t end = clock();				// 结束时间

	cout << ">>> 耗时: " << end - start << endl;

	return 0;
}

通过这种方式可以获得毫秒级的时间差。 

 

 

 

 

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试