1樓:
4.2 獲得日期和時間
這裡說的日期和時間就是我們平時所說的年、月、日、時、分、秒等資訊。從第2節我們已經知道這些資訊都儲存在乙個名為tm的結構體中,那麼如何將乙個日曆時間儲存為乙個tm結構的物件呢?
其中可以使用的函式是gmtime()和localtime(),這兩個函式的原型為:
struct tm * gmtime(const time_t *timer);
struct tm * localtime(const time_t * timer);
其中gmtime()函式是將日曆時間轉化為世界標準時間(即格林尼治時間),並返回乙個tm結構體來儲存這個時間,而localtime()函式是將日曆時間轉化為本地時間。比如現在用gmtime()函式獲得的世界標準時間是2023年7月30日7點18分20秒,那麼我用localtime()函式在中國地區獲得的本地時間會比世界標準時間晚8個小時,即2023年7月30日15點18分20秒。下面是個例子:
#include "time.h"
#include "stdio.h"
int main(void)
執行結果是:
local hour is: 15
utc hour is: 7
4.3 固定的時間格式
我們可以通過asctime()函式和ctime()函式將時間以固定的格式顯示出來,兩者的返回值都是char*型的字串。返回的時間格式為:
星期幾 月份 日期 時:分:秒 年\n\0
例如:wed jan 02 02:03:55 1980\n\0
其中\n是乙個換行符,\0是乙個空字元,表示字串結束。下面是兩個函式的原型:
char * asctime(const struct tm * timeptr);
char * ctime(const time_t *timer);
其中asctime()函式是通過tm結構來生成具有固定格式的儲存時間資訊的字串,而ctime()是通過日曆時間來生成時間字串。這樣的話,asctime()函式只是把tm結構物件中的各個域填到時間字串的相應位置就行了,而ctime()函式需要先參照本地的時間設定,把日曆時間轉化為本地時間,然後再生成格式化後的字串。在下面,如果t是乙個非空的time_t變數的話,那麼:
printf(ctime(&t));
等價於:
struct tm *ptr;
ptr=localtime(&t);
printf(asctime(ptr));
那麼,下面這個程式的兩條printf語句輸出的結果就是不同的了(除非你將本地時區設為世界標準時間所在的時區):
#include "time.h"
#include "stdio.h"
int main(void)
執行結果:
sat jul 30 08:43:03 2005
sat jul 30 16:43:03 2005
2樓:匿名使用者
c語言中讀取系統時間的函式為time(),其函式原型為:
#include
time_t time( time_t * ) ;
time_t就是long,函式返回從2023年1月1日(mfc是2023年12月31日)0時0分0秒,到現在的的秒數。可以呼叫ctime()函式進行時間轉換輸出:
char * ctime(const time_t *timer);
將日曆時間轉換成本地時間,按年月日格式,進行輸出,如:
wed sep 23 08:43:03 2015c語言還提供了將秒數轉換成相應的時間結構的函式:
struct tm * gmtime(const time_t *timer); //將日曆時間轉化為世界標準時間(即格林尼治時間)
struct tm * localtime(const time_t * timer); //將日曆時間轉化為本地時間
將通過time()函式返回的值,轉換成時間結構struct tm :
struct tm ;
程式設計者可以根據程式功能的情況,靈活的進行日期的讀取與輸出了。
3樓:倒霉熊
#include
#include
void main ()
***************==
#include -- 必須的時間函式標頭檔案
time_t -- 時間型別(time.h 定義)
struct tm -- 時間結構,time.h 定義如下:
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
time ( &rawtime ); -- 獲取時間,以秒計,從2023年1月一日起算,存於rawtime
localtime ( &rawtime ); -- 轉為當地時間,tm 時間結構
asctime ()-- 轉為標準ascii時間格式:
星期 月 日 時:分:秒 年
****************************************=
你要的格式可這樣輸出:
printf ( "%4d-%02d-%02d %02d:%02d:%02d\n",1900+timeinfo->tm_year, 1+timeinfo->tm_mon,
timeinfo->tm_mday,timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);
就是直接列印tm,tm_year 從2023年計算,所以要加1900,
月tm_mon,從0計算,所以要加1
其它你一目了然啦。
4樓:匿名使用者
byte bt = new byte[1];
using (filestream fs = new filestream("檔案絕對路徑", filemode.open, fileaccess.read))
讀入了bt
c語言中 如何獲取系統時間
5樓:匿名使用者
方法一,#include
int main()
time_t timep;
struct tm *p;
time (&timep);
p=gmtime(&timep);
printf("%d\n",p->tm_sec); /*獲取當前秒*/
printf("%d\n",p->tm_min); /*獲取當前分*/
printf("%d\n",8+p->tm_hour);/*獲取當前時,這裡獲取西方的時間,剛好相差八個小時*/
printf("%d\n",p->tm_mday);/*獲取當前月份日數,範圍是1-31*/
printf("%d\n",1+p->tm_mon);/*獲取當前月份,範圍是0-11,所以要加1*/
printf("%d\n",1900+p->tm_year);/*獲取當前年份,從1900開始,所以要加1900*/
printf("%d\n",p->tm_yday); /*從今年1月1日算起至今的天數,範圍為0-365*/
方法二.#include
#include
int main ()
time_t t
獲取unix時間戳。
lt = localtime (&t);//轉為時間結構。
printf ( "%d/%d/%d %d:%d:%d\n",lt->tm_year+1900, lt->tm_mon, lt->tm_mday,
lt->tm_hour, lt->tm_min, lt->tm_sec);//輸出結果
return 0;}
擴充套件資料
1、ctimespan類
如果想計算兩段時間的差值,可以使用ctimespan類,具體使用方法如下:
ctime t1( 1999, 3, 19, 22, 15, 0 );
ctime t = ctime::getcurrenttime();
ctimespan span=t-t1; //計算當前系統時間與時間t1的間隔
int iday=span.getdays(); //獲取這段時間間隔共有多少天
int ihour=span.gettotalhours(); //獲取總共有多少小時
int imin=span.gettotalminutes();//獲取總共有多少分鐘
int isec=span.gettotalseconds();//獲取總共有多少秒
2、timeb()函式
_timeb定義在sys\timeb.h,有四個fields
dstflag
millitm
time
timezone
void _ftime( struct _timeb *timeptr );
struct _timeb timebuffer;
_ftime( &timebuffer );
6樓:阿里
#include
int main()
time_t timep;
struct tm *p;
time (&timep);
p=gmtime(&timep);
printf("%d\n",p->tm_sec); /*獲取當前秒*/
printf("%d\n",p->tm_min); /*獲取當前分*/
printf("%d\n",8+p->tm_hour);/*獲取當前時,這裡獲取西方的時間,剛好相差八個小時*/
printf("%d\n",p->tm_mday);/*獲取當前月份日數,範圍是1-31*/
printf("%d\n",1+p->tm_mon);/*獲取當前月份,範圍是0-11,所以要加1*/
printf("%d\n",1900+p->tm_year);/*獲取當前年份,從1900開始,所以要加1900*/
printf("%d\n",p->tm_yday); /*從今年1月1日算起至今的天數,範圍為0-365*/
擴充套件鏈結
注意事項:
struct tm中的tm_year 值為實際年減去1900, 所以輸出的時候要是lt->tm_year+1900。
c語言fread函式讀取檔案問題
你寫入文字檔案後,資料是用ascii碼串的形式來表示,已經不是二進位制資料了,因此需要用fscanf函式來讀取,試試如下程式 include include struct hj main fclose fp fread是一個函式。從一個檔案流中讀資料,最多讀取count個元素,每個元素size位元組...
c語言裡有沒有函式可以把浮點型轉化為字串
有,char gcvt double v,int n,char b 就是其一。其中b是存放轉換後的字串的空間首位址 指標 n是轉換後的字串的長度,v是要轉換的浮點數。應用舉例如下 include stdafx.h if the vc 6.0,with this line.include stdio....
C語言讀入資料的問題,C語言讀取資料問題,請大神幫我看看,讀取byte某幾位
能把所有的源 放上來嗎 關於c語言scanf語句無法讀取資料的問題 scanf lf p 是小寫的字母l,不是數字1 關於c語言中用scanf函式如何輸入資料的問題 如果scanf中 d是連著寫的如 d d d 在輸入資料時,資料之間不可以加逗號,只能是空格或tab鍵或專者回車鍵 2 3 4 2 按...