C++怎样获取当前系统时间?
    
    
    
    1、调用cmd函数来获取当前时间
   
这个模块并不是特别的麻烦,因为这种方法是直接使用cmd命令进行获取以及更改系统时间的一种方法,
    但是并不建议大家使用,尤其是有杀毒软件的,因为这个程序涉及到系统的一些更改,当然就非常容易被误认为是一种木马病毒,就拿联想的扬天来说,装机自带
    
     迈克菲
    
    碰到要更改系统的一些程序直接关闭,并不像
    
     360杀毒
    
    先是列入程序的木马黑名单,但是自己可以强制使其运行,那废话不多说,先来看一下程序:
   
#include <stdlib.h>
using namespace std;
int main()
{
	system("time");
	return 0;
}
    当然,我在这里并不会多讲system的命令,大家有需要的话可以参考一下我的另外一篇博文:
    
     C++里的调用cmd命令的方法
    
   
    那在这里我就先只展示这个程序的运行后的效果:
    
     
   
    
    
    2、识别系统API来获取当前时间
   
    使用系统内部的
    
     API
    
    来获取当前时间是我最喜欢用的,
    
     它不仅优秀,而且高大上!
    
    咳咳,不好意思,说错了,应该是:
    
     它不仅好用,而且精确,更是因为,非常好理解
    
    这对于新手小白也是从未有过的
    
     福音!
    
   
那直接来看程序:
#include <stdio.h>
#include <windows.h>
using namespace std;
int main()
{
	SYSTEMTIME sys;
	GetLocalTime(&sys);
	printf("%4d/%02d/%02d %02d:%02d:%02d.%03d 星期%1d\n",sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute, sys.wSecond,sys.wMilliseconds,sys.wDayOfWeek);
	return 0;
}
    这里
    
     我觉得
    
    有必要将一下,此处的sys.wYear是表示年的数字,sys.wDayOfWeek是表示一周里面的星期几,以此类推,每个英文单词的前面都加上一个
    
     小写的“w“就是这个函数的命令的调用
    
   
    那我们再来看一张图片:
    
     
   
    当然,细心的小伙伴会发现,
    
     printf里面有些空格和”/“这些东西大家都可以修改,因为这个是控制输出的样式的,并不影响程序最后的结果
    
    ,就比如下面的这张图:
   
     
   
    最后再多一句嘴:
    
     通过API命令获取到的时间是可以直接作为变量储存的,也就是说,可以直接可以用作判断变量
    
   
就例如前不久刚刚完工的一个程序,我就是用的API命令来获取的时间,并定义成int类型的变量,最后在实现判断的功能~~
    
    
    3、直接获取系统时间
   
    直接获取法是比较难理解的一种方法,但是一旦会用它,那就叫一个
    
     畅通无阻
    
    但是这种方法到底有多难理解呢?
   
    打个比喻:
    
     有一棵100米的树,每天白天,你能上升2厘米,晚上,你要掉1厘米,也就是说,整整一天只能够上升1厘米,但是现在树的净高是100米,计算一下需要多少天,再想象一下自己如果真的在那种情况下的话,恐怕天数,不仅仅是一个数字那么简单
    
   
    那对于爱挑战的小伙伴来说,这无疑是个
    
     大好的机会
    
    ,那我们就来看一看代码吧!
   
#include<iostream>  
#include<time.h>  
using namespace std;  
  
int main()  
{  
 
	//获取系统时间  
	time_t now_time=time(NULL);  
	//获取本地时间  
	tm*  t_tm = localtime(&now_time);  
	//转换为年月日星期时分秒结果,如图:  
	printf("local time is    : %s\n", asctime(t_tm));  
	//将时间转换为秒  
	time_t mk_time = mktime(t_tm);  
	
	//也可以自己定义一个时间  
	//定义截止时间  
	struct tm deadline_tm;  
	deadline_tm.tm_sec=0;//[0~59]  
	deadline_tm.tm_min=10;//[0~59]  
	deadline_tm.tm_hour=13;//[0~23]  
	deadline_tm.tm_isdst=0;//default  
	deadline_tm.tm_mday=31;//[1~31]  
	deadline_tm.tm_mon=2;//[0~11]  
}
    很多的小伙伴
    
     包括我
    
    看到这么多的代码和注释,
    
     
      脑壳痛,快用万通筋骨贴!
     
    
    Emm。。。
    
     (突然感觉这像是植入的广告)
    
    
     但是
    
    千万别
    
     抠脑壳
    
    ,我们一起来解读一下这个代码:
   
首先是头文件:
#include<iostream>  
#include<time.h>  
这个应该不用过多的去解说,就是普普通通的两个头文件
其次是获取两种时间:
- 1、获取系统时间
- 2、获取本地时间
//获取系统时间  
time_t now_time=time(NULL);  
//获取本地时间  
tm*  t_tm = localtime(&now_time);
    那获取这两种时间有什么用呢,其实在这里我尝试过只获取一种时间来获取当前时间,但是我的电脑上运行好似不行,但是大家也可以尝试一下,比如说注释一段,等等,但是这里想提醒大家的是:
    
     两种时间都是有关联性的,也就是说,没有这个时间,那么下一个时间就执行不了运算的功能
    
   
//转换为年月日星期时分秒结果,如图:  
printf("local time is    : %s\n", asctime(t_tm));  
//将时间转换为秒  
time_t mk_time = mktime(t_tm);  
这一段就只是一个运算与转换的模块,后面方便输出的时候的可视化,不然。。。(大家可以试试没有转换与运算的模块是什么东东,我是看不懂~)
最后,来说一下最后的一个模块:
//定义截止时间  
struct tm deadline_tm;  
deadline_tm.tm_sec=0;//[0~59]  
deadline_tm.tm_min=10;//[0~59]  
deadline_tm.tm_hour=13;//[0~23]  
deadline_tm.tm_isdst=0;//default  
deadline_tm.tm_mday=31;//[1~31]  
deadline_tm.tm_mon=2;//[0~11]  
    这个大家不用深入了解,只不过是一个
    
     告诉编译器这个时间是60进制的而已啦!
    
    
     突然感觉电脑是一个”聪明的傻子“
    
   
好了,以上就是今天的内容,之后我还会继续更新我的博客,欢迎大家关注我的博客,查看更多的文章!也欢迎大家在CSDN社区里面发布自己的一些发现和经验!拜拜!
 
