time(0)获取距离1970年1月1日的格林尼治(本初子午线所在地)时间差秒为单位与time_t t;time(&t)同理
由此我们可以制作一个简易的报时装置:
所需头文件stdio.h、stdlib.h、time.h 强迫症所需windows.h
所需函数time()、printf()、Sleep() 强迫症所需system()
首先我们要得到小时,分钟和秒:
分析:因为我们得到的是以秒为单位的时间,所有要得到今天小时最简单的方法就是得到今天的所有秒数,即舍去所有的天数的秒today_s=t%(3600*24)
接下来就是得到
h=(today_s/3600+8)%24-->>加八是因为北京时间是东八区的区时距离本初子午线有8个小时的时间差,取余24是防止出现超过24的数字,如除完剩下18+8=26,对应的是第二天的2点取余24就可以避免26的出现
m和s:
m=today_s%3600/60-->>没什么好说,%得到小时以下的秒,/舍去秒时得到分时。
s=today_s%60-->>直接得到秒时
OK时间刚好相匹配。
剩下的就是报时功能了技术有限只能用编译器输出得到:
首先要报时就要一直不断的得到时间,所以要用到循环结构,一个死循环
while(1)或者for (;;)
由此可得到
但是!一直不断输出不是我们想要的,我们想要的是可以自定义输出时间间隔那么就需要它可以自动暂停一段时间而后再运行,这时就需要用到Sleep()函数而Sleep函数不是vs2022自带的,需要一个头文件stdlib.h
Sleep函数内加入的数字为时间间隔以毫秒ms为单位
直接加在循环的最后边
到这里一个简易的报时装置就做好了。
-------------------------------------------------------------------------------
由于个人是个强迫症患者,只喜欢让时间在第一行出现,于是又引入一个清屏功能所需头文件windows.h中的system()加入”cls"指令可以实现清屏效果
OK最终结果完成!!!