c語言utc時間
A. c語言中如何計算時間差
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
unsigned char time1[] = {10, 8, 31, 9, 26 };
unsigned char time2[] = { 10, 8, 31, 9, 50 };
struct tm t1 = {0};
struct tm t2 = {0};
time_t _t1;
time_t _t2;
double diff;
t1.tm_year = time1[0] + 100;
t1.tm_mon = time1[1];
t1.tm_mday = time1[2];
t1.tm_hour = time1[3];
t1.tm_min = time1[4];
t2.tm_year = time2[0] + 100;
t2.tm_mon = time2[1];
t2.tm_mday = time2[2];
t2.tm_hour = time2[3];
t2.tm_min = time2[4];
_t1 = _mkgmtime( &t1 );
_t2 = _mkgmtime( &t2 );
diff = difftime(_t2, _t1 );
printf( "相差 %.0f 分鍾
", diff / 60 );
}
(1)c語言utc時間擴展閱讀:
C語言中有兩個相關的函數用來計算時間差,分別是:
time_t time( time_t *t) 與 clock_t clock(void)
頭文件: time.h
計算的時間單位分別為: s , ms
time_t 和 clock_t 是函數庫time.h 中定義的用來保存時間的數據結構
返回值:
1、time : 返回從公元1970年1月1號的UTC時間從0時0分0秒算起到現在所經過的秒數。如果參數 t 非空指針的話,返回的時間會保存在 t 所指向的內存。
2、clock:返回從「開啟這個程序進程」到「程序中調用clock()函數」時之間的CPU時鍾計時單元(clock tick)數。 1單元 = 1 ms。
所以我們可以根據具體情況需求,判斷採用哪一個函數。
具體用法如下例子:
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
time_t c_start, t_start, c_end, t_end;
c_start = clock(); //!< 單位為ms
t_start = time(NULL); //!< 單位為s
system("pause");
c_end = clock();
t_end = time(NULL);
//!<difftime(time_t, time_t)返回兩個time_t變數間的時間間隔,即時間差
printf("The pause used %f ms by clock() ",difftime(c_end,c_start));
printf("The pause used %f s by time() ",difftime(t_end,t_start));
system("pause");
return 0;
}
因此,要計算某一函數塊的佔用時間時,只需要在執行該函數塊之前和執行完該函數塊之後調用同一個時間計算函數。再調用函數difftime()計算兩者的差,即可得到耗費時間。
B. 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. c語言什麼時候誕生的
1972年。
C 語言里的 時間/日期 計算 起點,有個 unix timestamp(unix 時間圖章)是 Jan 1, 1970 UTC。所以 c 語言發明時間,應當是 1970年1月1日以後。
1969-1973年在美國電話電報公司(AT&T)貝爾實驗室開始了C語言的最初研發。根據C語言的發明者丹尼斯·里奇 (Dennis Ritchie) 說,C 語言最重要的研發時期是在1972年。
細節: 最初的Unix是用匯編語言編寫的,一些應用是由叫做B語言的解釋型語言和匯編語言混合編寫的,在移植的過程中遇到不少麻煩。早在對Multics項目調整過程中,就迫切需要一門高級計算機語言做工具,為了解決程序的可移植性問題,肯·湯普遜和丹尼斯·里奇決定對它進行簡單改進,形成 「New B」 語言。但 New B 在Unix的移植方面依然不盡人意,此後里奇又對 New B 語言做了改進,C語言誕生。
D. 使用c語言描述夏時令期間
c 語言獲取現在時間用 time(NULL);
無論你在哪個時區,那個國家,time(NULL) 返回值 是 一模一樣的,因為它等於
UTC 時間,從 1970年1月1日0時起到現在的 秒數。
當地時間的計算,涉及到時區。中國用東八區,當地時間偏移量 是 UTC+8 小時。
每年3月的最後一個星期天是幾號,與年有關。
每年10月最後一個星期天是幾號,與年有關。
算得 起始 月日,結束 月日。
當你的時間 介於 起始結束之間 就是 夏令時,設 key=1.
=======
下面給你 提示,算出 每年起始截止 月日,換算到 JD ( 該年的第幾天),
你自己 得到 現在時間,調 YMD_2_JD 得到 JD_now,
if (JD_now < jd2 && JD_now > jd) key =1;else key=0;
=========
#include<stdio.h>
#include<math.h>
#include<time.h>
int YMD_2_WeekDay(int Y, int M, int D){
int offset,jd,weekD;
offset = ((Y-1)+(Y-1)/4-(Y-1)/100+(Y-1)/400) % 7 ;
jd = YMD_2_JD(Y,M,D);
weekD = (jd + offset) % 7;
return weekD;
}
int YMD_2_JD(int Y, int M, int D){
const short MonthDay[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int JD,i;
JD=D;
for (i=0;i<M;i++) JD+=MonthDay[i];
if (((Y%4==0)&&(Y%100!=0)||(Y%400==0)) && (M>2)) JD++;
return JD;
}
int main()
{
int Y=2015,M=3,D=31,M2=10,D2=31;
int wd,wd2,jd,jd2;
wd = YMD_2_WeekDay(Y,M,D);
wd2 = YMD_2_WeekDay(Y,M2,D2);
D=D-wd;
D2=D2-wd2;
printf("date: %d %d\n",D,D2);
jd=YMD_2_JD(Y,M,D);
jd2 = YMD_2_JD(Y,M2,D2);
printf("J day: %d %d\n",jd,jd2);
return 0;
}
/*
time(NULL); gets time
elapsed since 00:00 hours, Jan 1, 1970 UTC
*/
E. C語言如何獲取電腦實時時間
需要利用C語言的時間函數time和localtime,具體說明如下:
一、函數介面介紹:
1、time函數。
形式為time_t time (time_t *__timer);
其中time_t為time.h定義的結構體,一般為長整型。
這個函數會獲取當前時間,並返回。 如果參數__timer非空,會存儲相同值到__timer指向的內存中。
time函數返回的為unix時間戳,即從1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒。
由於是秒作為單位的,所以這並不是習慣上的時間,要轉為習慣上的年月日時間形式就需要另外一個函數了。
2、localtime函數。
形式為struct tm *localtime (const time_t *__timer);
其中tm為一個結構體,包含了年月日時分秒等信息。
這種結構是適合用來輸出的。
二、參考代碼:
#include<stdio.h>
#include<time.h>
intmain()
{
time_tt;
structtm*lt;
time(&t);//獲取Unix時間戳。
lt=localtime(&t);//轉為時間結構。
printf("%d/%d/%d%d:%d:%d ",lt->tm_year+1900,lt->tm_mon,lt->tm_mday,lt->tm_hour,lt->tm_min,lt->tm_sec);//輸出結果
return0;
}
注意事項:
struct tm中的tm_year 值為實際年減去1900, 所以輸出的時候要是lt->tm_year+1900。
F. 用C語言獲取本地的時區
getlocaltime裡面是沒有時區信息的。
你可以這樣:
time_ttime_utc=0;
structtm*p_tm_time;
inttime_zone=0;
p_tm_time=localtime(&time_utc);//轉成當地時間
time_zone=(p_tm_time->tm_hour>12)?(p_tm_time->tm_hour-=24):p_tm_time->tm_hour;
把0時間轉為當地時間,得到的是帶時區的結果。
G. C語言,如何將UTC時間改為當前系統的時間
其中結構指針tt中就存儲了年月日等時間信息
H. 在C語言中如何實現不同時區當前時間的輸出
你要知道時區,才能算出那裡的時間。
C語言可以算出你的當地時間和UTC(格林尼治時間),用你的計算機本身的設置。給出時區,就可推算。
中國北京時間是東八區。美國鳳凰城西7區。冰島=格林尼治時間。
下面程序計算美國鳳凰城,中國北京,和冰島時間:
#include <stdio.h>
#include <time.h>
#define MST (-7)
#define UTC (0)
#define CCT (+8)
int main ()
{
time_t rawtime;
tm * ptm;
time ( &rawtime );
ptm = gmtime ( &rawtime );
puts ("Current time around the World:");
printf ("Phoenix, AZ (U.S.) : %2d:%02d\n", (ptm->tm_hour+MST)%24, ptm->tm_min);
printf ("Reykjavik (Iceland) : %2d:%02d\n", (ptm->tm_hour+UTC)%24, ptm->tm_min);
printf ("Beijing (China) : %2d:%02d\n", (ptm->tm_hour+CCT)%24, ptm->tm_min);
return 0;
}
I. 用c語言 坐時間換算
#include <stdio.h>
int main( )
{
int amount;
printf("請輸入一個數字");
scanf("%d",&amount);
amount=(amount+2400-800)%2400;
printf("%d 小時 %d分鍾\n",amount/100,amount%100); //你原來的輸出格式
printf("%d\n",amount); //題目要求的輸出格式
return 0;
}
J. 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所儲存的時間的差.