一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - C/C++ - C語言每日練習(xí)之動態(tài)顯示系統(tǒng)時間

C語言每日練習(xí)之動態(tài)顯示系統(tǒng)時間

2022-02-21 15:30小輝_Super C/C++

這篇文章主要介紹了C語言動態(tài)顯示系統(tǒng)時,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

C語言的時間庫函數(shù)基本都在time.h里,該頭文件主要包含三種形式的時間量,一種是time_t類型(原型為long),表示當前時間到1970年1月1日的總秒數(shù);一種是struct tm類型,里面是時間日期的數(shù)據(jù);還有一種clock_t,這個類型本文用不到,它表示與處理器時鐘有關(guān)的時間數(shù)據(jù)。

本文將介紹4種顯示系統(tǒng)時間的方法:

  • 第一種直接用ctime函數(shù)將time_t類型的秒數(shù)據(jù)轉(zhuǎn)換成字符串;
  • 第二種先通過time_t類型變量獲取秒數(shù)據(jù),然后再用localtime()函數(shù)將秒數(shù)據(jù)轉(zhuǎn)換成struct tm類型數(shù)據(jù),最后將struct tm類型變量的結(jié)構(gòu)體成員分別打印,同時打印格式可以自己隨意控制。
  • 第三種在第二種的基礎(chǔ)上,使用strftime()函數(shù),格式化打印時間數(shù)據(jù),這些格式有專門的規(guī)范,具體參數(shù)可以自行百度。
  • 第四種在第三種的基礎(chǔ)上,增加了毫秒和微秒顯示,不過需要新增一個數(shù)據(jù)類型strcut timeval和gettimeofday()函數(shù),該函數(shù)和time()作用類似,都是獲取秒數(shù),但后者是將獲取的秒數(shù)傳給time_t類型變量。

 

代碼實現(xiàn)

1.簡易版

time_t time(time_t *timer):time()是指返回自 Unix 紀元(January 1 1970 00:00:00 GMT)起的當前時間的秒數(shù)的函數(shù),主要用來獲取當前的系統(tǒng)時間,返回的結(jié)果是一個time_t類型。
char *ctime(const time_t *timer):把日期和時間轉(zhuǎn)換為字符串,函數(shù)形參為time_t類型。
――百度百科

ctime()這個函數(shù)會根據(jù)本地時區(qū)進行轉(zhuǎn)換,字符串格式為"Wed Jun 30 21 :49 :08 1993\n"

#include <stdio.h>
#include <time.h>


int main ()
{
  time_t tt;
  time(&tt);     //獲取秒數(shù)
  printf ( "當前本地時間為: %s", ctime(&tt));
  return 0;
}

運行結(jié)果:

C語言每日練習(xí)之動態(tài)顯示系統(tǒng)時間

2.自定義格式版

struct tm結(jié)構(gòu)體成員:

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 到 11        */
int tm_year;        /* 自 1900 年起的年數(shù)        */
int tm_wday;        /* 一周中的第幾天,范圍從 0 到 6    */
int tm_yday;        /* 一年中的第幾天,范圍從 0 到 365    */
int tm_isdst;       /* 夏令時                */
};

struct tm *gmtime(const time_t *timer):將time_t類型變量轉(zhuǎn)換為struct tm類型變量,同時使用協(xié)調(diào)世界時(UTC),也稱為格林尼治標準時間(GMT)【應(yīng)該不常用】
struct tm *localtime(const time_t *timer):和gmtime功能類似,將time_t類型變量轉(zhuǎn)換為struct tm類型變量,但時間由本地時區(qū)決定。
char *asctime(const struct tm *timeptr):把日期和時間轉(zhuǎn)換為字符串,函數(shù)形參為struct tm類型。
――百度百科

【注意】tm_year是從1900年算起,所以打印它時需要加上1900;tm_mon從0開始算,所以打印它時需要加1。

#include <time.h>
#include <stdio.h>
#include <conio.h>                //kbhit()/_kbhit()
#include <Windows.h>              //Sleep(ms)

int main(void)
{
  time_t tt_;
  struct tm *tm_ ;
  while(!kbhit())               //按下鍵盤任意鍵退出循環(huán)(包括鼠標點擊)
  {
      time(&tt_);               //獲取秒數(shù)
      tm_ = localtime(&tt_);    //將秒數(shù)轉(zhuǎn)換為本地時間(北京時間)
    //tm_ = gmtime(&tt_);       //將秒數(shù)轉(zhuǎn)換為UTC時區(qū)時間(不建議使用)

      /* 自己定義打印樣式; %02d:寬度為兩個整型,如果不夠,左邊補零; \r:回車不換行 */
      printf("當前時間:%d年%d月%d日 %02d:%02d:%02d\r", 1900 + tm_->tm_year,\
             tm_->tm_mon + 1, tm_->tm_mday, tm_->tm_hour, tm_->tm_min, tm_->tm_sec);

      /* 使用asctime函數(shù)打印tm變量表示的時間( 自帶回車換行) */
      //printf("當前本地時間為: %s", asctime(tm_));

      Sleep(500);               //0.5s延時
  }

  return 0;
}

運行結(jié)果:

動態(tài)打印本地時間(自定義格式):

C語言每日練習(xí)之動態(tài)顯示系統(tǒng)時間

動態(tài)打印UTC時間(自定義格式),時間比本地時間早8小時:

C語言每日練習(xí)之動態(tài)顯示系統(tǒng)時間

使用asctime函數(shù)動態(tài)打印本地時間,打印間隔0.5s:

C語言每日練習(xí)之動態(tài)顯示系統(tǒng)時間

3.格式化輸出版

size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr):根據(jù)format指定的格式(格式必須符合要求),將時間數(shù)據(jù)存入字符串str中,想了解具體的格式,可以自行百度,這里簡單介紹下面程序使用到的格式參數(shù):
%Y:年份(真實年份,不需加1900)
%m:月份(01-12)
%d:一月中的第幾天(01-31)
%H:小時(00-23)
%M:分(00-59)
%S:秒(00-59)
――百度百科

#include <time.h>
#include <stdio.h>
#include <conio.h>                //kbhit()/_kbhit()
#include <Windows.h>              //Sleep(ms)

int main(void)
{
  time_t tt_;
  struct tm *tm_ ;
  char output[20];
  while(!kbhit())               //按下鍵盤任意鍵退出循環(huán)(包括鼠標點擊)
  {
      time(&tt_);               //獲取秒數(shù)
      tm_ = localtime(&tt_);    //將秒數(shù)轉(zhuǎn)換為本地時間(北京時間)

      /* 格式化打印 */
      strftime(output, 20, "%Y-%m-%d %H:%M:%S", tm_);
      printf("當前時間:%s\r", output); //回車不換行
      Sleep(500);               //0.5s延時
  }
  return 0;
}

運行結(jié)果:

C語言每日練習(xí)之動態(tài)顯示系統(tǒng)時間

4.精細版(毫秒+微秒)

struct timeval結(jié)構(gòu)體成員:

 

struct timeval{
 long tv_sec;  //秒
 long tv_usec;  //微秒
};

int gettimeofday (struct timeval * tv, struct timezone * tz):獲得當前精確時間(1970年1月1日到現(xiàn)在的時間),其參數(shù)tv是保存獲取時間結(jié)果的結(jié)構(gòu)體,參數(shù)tz用于保存時區(qū)結(jié)果,函數(shù)執(zhí)行成功后返回0,失敗后返回-1
――百度百科

gettimeofday()和前面提到的time()函數(shù)功能類似,都是獲取時間,但它們形參和返回值差別還是很大的。

int main(void)
{
  time_t tt_;
  struct tm *tm_ ;
  struct timeval tv_;
  long tv_ms = 0, tv_us = 0;
  char output[20];
  while(!kbhit())                //按下鍵盤任意鍵退出循環(huán)(包括鼠標點擊)
  {
      time(&tt_);                //獲取秒數(shù)保存到time_t變量
      tm_ = localtime(&tt_);     //將秒數(shù)轉(zhuǎn)換為本地時間(北京時間)
      gettimeofday(&tv_,NULL);   //獲取1970-1-1到現(xiàn)在的時間保存到timeval變量

      /* 格式化打印 */
      strftime(output, 20, "%Y-%m-%d %H:%M:%S", tm_);
      tv_ms = tv_.tv_usec / 1000;//獲取毫秒
      tv_us = tv_.tv_usec % 1000;//獲取微秒
      printf("當前時間:%s %ld:%ld\r", output,\
             tv_ms / 10, tv_us / 10);   //改成100進1
      Sleep(1);                  //ms延時
  }
  return 0;
}

運行結(jié)果:

C語言每日練習(xí)之動態(tài)顯示系統(tǒng)時間

 

網(wǎng)上參考

網(wǎng)上找到一篇能夠顯示毫秒的時間打印代碼,不過只適用于Windows平臺:

原文鏈接:用C語言動態(tài)打印當前時間(精確到毫秒)

#include <stdio.h> 
#include <windows.h> 

int main( void ) 
{ 
	SYSTEMTIME sys; 
	while(1){
		printf("當前時刻為:\n"); 	 
		//獲取系統(tǒng)時間 
		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); 
		Sleep(1);
		//清屏命令 
		system("cls");
	}
	return 0;
}

運行效果:

他使用清屏來實現(xiàn)單行打印,這樣容易造成頻閃現(xiàn)象,其實只要將\n換成成\r就行了。

C語言每日練習(xí)之動態(tài)顯示系統(tǒng)時間

 

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注服務(wù)器之家的更多內(nèi)容!

原文鏈接:https://blog.csdn.net/weixin_43772810/article/details/121200099

延伸 · 閱讀

精彩推薦
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++學(xué)習(xí)C++編程的必備軟件

    學(xué)習(xí)C++編程的必備軟件

    本文給大家分享的是作者在學(xué)習(xí)使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C/C++經(jīng)典實例之模擬計算器示例代碼

    C/C++經(jīng)典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關(guān)于C/C++經(jīng)典實例之模擬計算器的相關(guān)資料,文中通過示...

    jia150610152021-06-07
  • C/C++C語言實現(xiàn)電腦關(guān)機程序

    C語言實現(xiàn)電腦關(guān)機程序

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)電腦關(guān)機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++c++ 單線程實現(xiàn)同時監(jiān)聽多個端口

    c++ 單線程實現(xiàn)同時監(jiān)聽多個端口

    這篇文章主要介紹了c++ 單線程實現(xiàn)同時監(jiān)聽多個端口的方法,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++深入理解goto語句的替代實現(xiàn)方式分析

    深入理解goto語句的替代實現(xiàn)方式分析

    本篇文章是對goto語句的替代實現(xiàn)方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網(wǎng)7342020-12-03
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內(nèi)存中的數(shù)據(jù)都是暫時的,當程序結(jié)束時,它們都將丟失,為了永久性的保存大量的數(shù)據(jù),C語言提供了對文件的操作,這篇文章主要給大家介紹了關(guān)于C語言中文件...

    針眼_6702022-01-24
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    strcpy 和strcnpy函數(shù)是字符串復(fù)制函數(shù)。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數(shù)使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
主站蜘蛛池模板: 99r视频| 日韩网站免费 | 欧美国产日韩1区俺去了 | 国产成人高清精品免费观看 | 无删减影视免费观看 | 成人欧美一区在线视频在线观看 | 免费369看片入口 | 嫩草影院永久一二三入口 | 我要看黄色毛片 | 欧美视频黑鬼大战白妞 | 欧美日韩一区二区三区久久 | 国产精品va在线观看无 | 99在线观看国产 | 国产九九视频在线观看 | 欧美夜夜精品一级爽 | 国产99er66在线视频 | 国产精品久久久久影院色老大 | 情欲满载2012美国dvd | 色老板成人永久免费视频 | 91九色麻豆 | 五月天婷婷精品免费视频 | 草草视频在线免费观看 | japaneseles女同专区 | 精品日韩欧美一区二区三区在线播放 | 日本又黄又裸一级大黄裸片 | 欧美a欧美1级 | 国产欧美精品一区二区三区四区 | 久久精品国产久精国产果冻传媒 | 国产精品网站在线观看 | 91香蕉视频在线观看 | 国产精品久久久久毛片真精品 | 国产精品密播放国产免费看 | 丰满艳妇亲伦视频 | 青视频在线| 国产亚洲精品一区二区在线播放 | 精品成人网 | 亚洲高清视频在线观看 | 四虎最新永久免费视频 | 护士让我吃奶我扒她奶 | 韩国三级在线播放 | xxx95日本老师xxx学生 |