⑴ c語言怎麼將一個年月日轉換成秒數
用mktime()函數。
表頭文件:#include <time.h>
定義函數:time_tmktime(structtm*timeptr);
函數說明:mktime()用來將參數timeptr所指的tm結構數據轉換成從公元1970年1月1日0時0分0秒算起至今的UTC時間所經過的秒數。
返回值:返回經過的秒數。
(1)時間換算函數c語言擴展閱讀:
C語言參考函數
C語言isgraph()函數:判斷一個字元是否是圖形字元
C語言isdigit()函數:判斷一個字元是否為數字
C語言iscntrl()函數:判斷一個字元是否為控制字元
C語言isalpha()函數:判斷一個字元是否是字母
C語言isalnum()函數:判斷一個字元是否是字母或者數字
C語言pow()函數:求x的y次方的值
C語言frexp()函數:提取浮點數的尾數和指數部分
⑵ C語言時間轉換問題
你寫得太繁雜了
intm,s,h=0;
scanf("%d",&s);
m=s/60;
h=m/60;
printf("%d時%d分%d秒",h,m%60,s%60);//最後一句改了一下
⑶ C語言函數的時間日期函數
函數庫為time.h、dos.h
在時間日期函數里,主要用到的結構有以下幾個:
總時間日期貯存結構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-11*/ │
│ int tm_year; /*自1900的年數*/ │
│ int tm_wday; /*自星期日的天數0-6*/ │
│ int tm_yday; /*自1月1日起的天數,0-365*/ │
│ int tm_isdst; /*是否採用夏時制,採用為正數*/│
│} │
└──────────────────────┘
日期貯存結構date
┌───────────────┐
│struct date │
│{ │
│ int da_year; /*自1900的年數*/│
│ char da_day; /*天數*/ │
│ char da_mon; /*月數 1=Jan*/ │
│} │
└───────────────┘
時間貯存結構time
┌────────────────┐
│struct time │
│{ │
│ unsigned char ti_min; /*分鍾*/│
│ unsigned char ti_hour; /*小時*/│
│ unsigned char ti_hund; │
│ unsigned char ti_sec; /*秒*/ │
│ │
└────────────────┘char *ctime(long *clock)
本函數把clock所指的時間(如由函數time返回的時間)轉換成下列格式的
字元串:Mon Nov 21 11:31:54 1983
char *asctime(struct tm *tm)
本函數把指定的tm結構類的時間轉換成下列格式的字元串:
Mon Nov 21 11:31:54 1983
double difftime(time_t time2,time_t time1)
計算結構time2和time1之間的時間差距(以秒為單位)
struct tm *gmtime(long *clock)本函數把clock所指的時間(如由函數time返回的時間)
轉換成格林威治時間,並以tm結構形式返回
struct tm *localtime(long *clock)本函數把clock所指的時間(如函數time返回的時間)
轉換成當地標准時間,並以tm結構形式返回
void tzset()本函數提供了對UNIX操作系統的兼容性
long dostounix(struct date *dateptr,struct time *timeptr)
本函數將dateptr所指的日期,timeptr所指的時間轉換成UNIX格式,並返回
自格林威治時間1970年1月1日凌晨起到現在的秒數
void unixtodos(long utime,struct date *dateptr,struct time *timeptr)
本函數將自格林威治時間1970年1月1日凌晨起到現在的秒數utime轉換成
DOS格式並保存於用戶所指的結構dateptr和timeptr中
void getdate(struct date *dateblk)本函數將計算機內的日期寫入結構dateblk
中以供用戶使用
void setdate(struct date *dateblk)本函數將計算機內的日期改成
由結構dateblk所指定的日期
void gettime(struct time *timep)本函數將計算機內的時間寫入結構timep中,
以供用戶使用
void settime(struct time *timep)本函數將計算機內的時間改為
由結構timep所指的時間
long time(long *tloc)本函數給出自格林威治時間1970年1月1日凌晨至現在所經
過的秒數,並將該值存於tloc所指的單元中.
int stime(long *tp)本函數將tp所指的時間(例如由time所返回的時間)
寫入計算機中.
⑷ c語言的時間函數
month - 1的原因是成員tm_mon的取值范圍是0-11也就是說0表示一月1表示二月,類推
年份同樣的道理
time ( &rawtime ); //獲取當前時間
localtime()//實際上是個轉化函數
//把存在rawtime中的時間存成結構體tm
⑸ c語言 時間函數
CLOCK()函數:
clock()是C/C++中的計時函數,而與其相關的數據類型是clock_t。在MSDN中,查得對clock函數定義如下:
clock_t
clock(void)
;
這個函數返回從「開啟這個程序進程」到「程序中調用clock()函數」時之間的CPU時鍾計時單元(clock
tick)數,在MSDN中稱之為掛鍾時間(wal-clock);若掛鍾時間不可取,則返回-1。其中clock_t是用來保存時間的數據類型,在time.h文件中,我們可以找到對它的定義:
#ifndef
_CLOCK_T_DEFINED
typedef
long
clock_t;
#define
_CLOCK_T_DEFINED
#endif
很明顯,clock_t是一個長整形數。在time.h文件中,還定義了一個常量CLOCKS_PER_SEC,它用來表示一秒鍾會有多少個時鍾計時單元,其定義如下:
#define
CLOCKS_PER_SEC
((clock_t)1000)
可以看到每過千分之一秒(1毫秒),調用clock()函數返回的值就加1。下面舉個例子,你可以使用公式clock()/CLOCKS_PER_SEC來計算一個進程自身的運行時間:
void
elapsed_time()
{
printf("Elapsed
time:%u
secs.\n",clock()/CLOCKS_PER_SEC);
}
當然,你也可以用clock函數來計算你的機器運行一個循環或者處理其它事件到底花了多少時間:
#include
<stdio.h>
#include
<stdlib.h>
#include
<time.h>
int
main(void)
{
long
i
=
10000000L;
clock_t
start,
finish;
double
ration;
/*
測量一個事件持續的時間*/
printf(
"Time
to
do
%ld
empty
loops
is
",
i)
;
start
=
clock();
while(
i--
);
finish
=
clock();
ration
=
(double)(finish
-
start)
/
CLOCKS_PER_SEC;
printf(
"%f
seconds\n",
ration
);
system("pause");
}
在筆者的機器上,運行結果如下:
Time
to
do
10000000
empty
loops
is
0.03000
seconds
上面我們看到時鍾計時單元的長度為1毫秒,那麼計時的精度也為1毫秒,那麼我們可不可以通過改變CLOCKS_PER_SEC的定義,通過把它定義的大一些,從而使計時精度更高呢?通過嘗試,你會發現這樣是不行的。在標准C/C++中,最小的計時單位是一毫秒。
time_t
time(
time_t
*timer
);
返回值是1970年到現在的秒數
用long型接就可以了
參數也是同樣意義
如
long
time_s
=
0;
time_s
=
time(
NULL
);
//
time_s就是1970年到現在的秒數
或者
long
*
time_s
=
NULL;
time(time_s);
//
*time_s就是1970年到現在的秒數
要計算前後一段時間的話之前取一次time,之後取一次相減就知道用了多少秒了
⑹ c語言 時間函數
c語言時間函數:
1、獲得日歷時間函數:
可以通過time()函數來獲得日歷時間(Calendar Time),其原型為:time_t time(time_t * timer);
如果已經聲明了參數timer,可以從參數timer返回現在的日歷時間,同時也可以通過返回值返回現在的日歷時間,即從一個時間點(例如:1970年1月1日0時0分0秒)到現在此時的秒數。如果參數為空(NUL),函數將只通過返回值返回現在的日歷時間,比如下面這個例子用來顯示當前的日歷時間:
2、獲得日期和時間函數:
這里說的日期和時間就是平時所說的年、月、日、時、分、秒等信息。從第2節我們已經知道這些信息都保存在一個名為tm的結構體中,那麼如何將一個日歷時間保存為一個tm結構的對象呢?
其中可以使用的函數是gmtime()和localtime(),這兩個函數的原型為:
struct tm * gmtime(const time_t *timer);
struct tm * localtime(const time_t * timer);
其中gmtime()函數是將日歷時間轉化為世界標准時間(即格林尼治時間),並返回一個tm結構體來保存這個時間,而localtime()函數是將日歷時間轉化為本地時間。比如現在用gmtime()函數獲得的世界標准時間是2005年7月30日7點18分20秒,那麼用localtime()函數在中國地區獲得的本地時間會比世界標准時間晚8個小時,即2005年7月30日15點18分20秒。
⑺ C語言計算時間函數
標准庫的time.h里有時間函數
time_t time (time_t *timer)
計算從1970年1月1日到當前系統時間,並把結果返回給timer變數,
函數本身返回的也是這個結果.time_t這個類型其實就是一個int.
另有:
double difftime ( time_t timer2, time_t timer1 )
把返回time2和time1所儲存的時間的差.
⑻ C語言時間,怎麼把time_t類型的時間,轉化成年、月、日、時、分、秒呢
可以使用gmtime函數或localtime函數將time_t類型的時間日期轉換為struct tm類型(年、月、日、時、分、秒)。
使用time函數返回的是一個long值,該值對用戶的意義不大,一般不能根據其值確定具體的年、月、日等數據。gmtime函數可以方便的對time_t類型數據進行轉換,將其轉換為tm結構的數據方便數據閱讀。gmtime函數的原型如下:struct tm *gmtime(time_t *timep);localtime函數的原型如下:struct tm *localtime(time_t *timep);將參數timep所指的time_t類型信息轉換成實際所使用的時間日期表示方法,將結果返回到結構tm結構類型的變數。gmtime函數用來存放實際日期時間的結構變數是靜態分配的,每次調用gmtime函數都將重寫該結構變數。如果希望保存結構變數中的內容,必須將其復制到tm結構的另一個變數中。gmtime函數與localtime函數的區別:gmtime函數返回的時間日期未經時區轉換,是UTC時間(又稱為世界時間,即格林尼治時間)。localtime函數返回當前時區的時間。
轉換日期時間表示形式time_t類型轉換為struct tm類型示例:
#include <stdio.h>
#include <time.h>
int main()
{
char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};/*指針字元數組*/ time_t t;
struct tm *p;
t=time(NULL);/*獲取從1970年1月1日零時到現在的秒數,保存到變數t中*/ p=gmtime(&t); /*變數t的值轉換為實際日期時間的表示格式*/
printf("%d年%02d月%02d日",(1900+p->tm_year), (1+p->tm_mon),p->tm_mday);
printf(" %s ", wday[p->tm_wday]);
printf("%02d:%02d:%02d\n", p->tm_hour, p->tm_min, p->tm_sec);
return 0;
}
注意:p=gmtime(&t);此行若改為p=localtime(&t);則返回當前時區的時間。
⑼ C語言中系統時間函數是怎麼用的
1、C語言中讀取系統時間的函數為time(),其函數原型為:
#include <time.h>
time_t time( time_t * ) ;
time_t就是long,函數返回從1970年1月1日(MFC是1899年12月31日)0時0分0秒,到現在的的秒數。
2、C語言還提供了將秒數轉換成相應的時間格式的函數:
char * ctime(const time_t *timer); //將日歷時間轉換成本地時間,返回轉換後的字元串指針 可定義字元串或是字元指針來接收返回值
struct tm * gmtime(const time_t *timer); //將日歷時間轉化為世界標准時間(即格林尼治時間),返回結構體指針 可定義struct tm *變數來接收結果
struct tm * localtime(const time_t * timer); //將日歷時間轉化為本地時間,返回結構體指針 可定義struct tm *變數來接收結果
3、常式:
#include<time.h>
voidmain()
{
time_tt;
structtm*pt;
char*pc;
time(&t);
pc=ctime(&t);printf("ctime:%s",pc);
pt=localtime(&t);printf("year=%d",pt->tm_year+1900);
}
//時間結構體structtm說明:
structtm{
inttm_sec;/*秒–取值區間為[0,59]*/
inttm_min;/*分-取值區間為[0,59]*/
inttm_hour;/*時-取值區間為[0,23]*/
inttm_mday;/*一個月中的日期-取值區間為[1,31]*/
inttm_mon;/*月份(從一月開始,0代表一月)-取值區間為[0,11]*/
inttm_year;/*年份,其值等於實際年份減去1900*/
inttm_wday;/*星期–取值區間為[0,6],其中0代表星期天,1代表星期一,以此類推*/
inttm_yday;/*從每年的1月1日開始的天數–取值區間為[0,365],其中0代表1月1日,1代表1月2日,以此類推*/
inttm_isdst;/*夏令時標識符,實行夏令時的時候,tm_isdst為正。不實行夏令時的進候,tm_isdst為0;不了解情況時,tm_isdst()為負。*/
};
⑽ 時間換算 c語言
#include<stdio.h>
intmain()
{
inthh,mm,ss;
intadd;
scanf("%d:%d:%d",&hh,&mm,&ss);
scanf("%d",&add);
ss=ss+add;
if(ss>=60){
ss=ss-60;
mm++;
if(mm>=60){
mm=mm-60;
hh++;
if(hh>=24){
hh=hh-24;
}
}
}
printf("%d:%d:%d ",hh,mm,ss);
}