c語言獲取時間戳
㈠ c語言中time(0)的意思是
time是C語言獲取當前系統時間的函數,以秒作單位,代表當前時間自Unix標准時間戳(1970年1月1日0點0分0秒,GMT)經過了多少秒。
形式為time_t time(time_t * t);
該函數提供兩種返回方式,返回值,和指針參數。
可以根據需要選擇。當參數t為空指針(NULL)時,只返回值。
而NULL的定義是(void *) 0, 所以time(0)也就是time(NULL)的另一種寫法,表示只通過返回值獲取時間值。
(1)c語言獲取時間戳擴展閱讀:
time函數
函數名稱: localtime
函數原型: struct tm *localtime(const time_t *timer)
函數功能: 返回一個以tm結構表達的機器時間信息
函數返回: 以tm結構表達的時間,結構tm定義如下:
#ifndef _TM_DEFINED
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代表一月) - 取值區間為[0,11] */
int tm_year; /* 年份,其值等於實際年份減去1900 */
int tm_wday; /* 星期 – 取值區間為[0,6],其中0代表星期天,1代表星期一,以此類推 */
int tm_yday; /* 從每年的1月1日開始的天數 – 取值區間為[0,365],其中0代表1月1日,1代表1月2日,以此類推 */
int tm_isdst; /* 夏令時標識符,實行夏令時的時候,tm_isdst為正。不實行夏令時的進候,tm_isdst為0;不了解情況時,tm_isdst()為負。*/
};
#define _TM_DEFINED
#endif
參數說明: timer-使用time()函數獲得的機器時間
㈡ 如何用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。
㈢ C語言怎麼獲取時間戳
DWORD tm = ::GetTickCount();
……
#ifndef _TIME32_T_DEFINED
typedef _W64 long __time32_t; /* 32-bit time value */
#define _TIME32_T_DEFINED
#endif /* _TIME32_T_DEFINED */
#ifndef _TIME64_T_DEFINED
#if _INTEGRAL_MAX_BITS >= 64
typedef __int64 __time64_t; /* 64-bit time value */
#endif /* _INTEGRAL_MAX_BITS >= 64 */
#define _TIME64_T_DEFINED
#endif /* _TIME64_T_DEFINED */
#ifndef _TIME_T_DEFINED
#ifdef _USE_32BIT_TIME_T
typedef __time32_t time_t; /* time value */
#else /* _USE_32BIT_TIME_T */
typedef __time64_t time_t; /* time value */
#endif /* _USE_32BIT_TIME_T */
#define _TIME_T_DEFINED /* avoid multiple def's of time_t */
#endif /* _TIME_T_DEFINED */
……
㈣ C語言怎麼獲取今天0點的時間戳
time_t now;
time(&now);
tm *temptm;
temptm = localtime(&now);
temptm->tm_hour = 0;
temptm->tm_min =0;
temptm->tm_sec = 0;
printf("%d%d%d %d:%d:%d",
temptm->tm_year +1900,
temptm->tm_mon +1,
temptm->tm_mday,
temptm->tm_hour,
temptm->tm_min,
temptm->tm_sec
);
㈤ C語言如何獲取本地時間,然後取時、分、秒的值
#include <stdio.h>
#include <time.h>
int main()
{time_t timep;
struct tm *tp;
time(&timep);
int p;
tp = localtime(&timep); //取得系統時間
printf("Today is %d-%d-%d ", (1900 + tp->tm_year), (1 + tp->tm_mon), tp->tm_mday);
printf("Now is %d:%02d:%02d ", tp->tm_hour, tp->tm_min, tp->tm_sec);
p=tp->tm_sec;
printf("p=%d ",p);
return 0;
}
㈥ c語言寫的socket程序客戶端,給服務端發送消息。加上時間戳,就是在消息前面加上時間。
time_tt;
structtm*ti;
charbuffer[1048],input[1024];
time(&t);//獲取時間戳
ti=localtime(&t);//轉成詳細時間信息
//格式化時間字元串
sprintf(buffer,"%04d/%02d/%02d%02d:%02d:%02d",
ti->tm_year+1900,
ti->tm_mon+1,
ti->tm_mday,
ti->tm_hour,
ti->tm_min,
ti->tm_sec);
fgets(input,1024,stdin);
strcat(buffer,input);//連接兩個字元串
printf("%s",buffer);
send(sockfd,buffer,strlen(buffer),0);
//望採納
㈦ 用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時間轉為當地時間,得到的是帶時區的結果。
㈧ C語言 如何把64位時間戳轉換成能看得懂的時間 (只有stdio。h 頭文件 C語言自己實現方法。)
#include<stdio.h>
typedeflonglonginttime64;
/*
將64位時間戳轉化為時間數組
*/
voidtransformToDate(time64timeStamp,time64**dateArry)
{
time64low,high,mid,t;
time64year,month,day,hour,minute,second,milliSecond;
time64daySum[]={0,31,59,90,120,151,181,212,243,273,304,334,365};
time64milOfDay=24*3600*1000;
time64milOfHour=3600*1000;
/*防止超過9999-12-3123:59:59:999*/
if(timeStamp>315537897599999){
timeStamp=315537897599999;
}
low=1;
high=9999;
while(low<=high)
{
mid=(low+high)>>1;
t=((mid-1)*365+(mid-1)/4-(mid-1)/100+(mid-1)/400)*milOfDay;
if(t==timeStamp)
{
low=mid+1;
break;
}
elseif(t<timeStamp)
low=mid+1;
else
high=mid-1;
}
year=low-1;
timeStamp-=((year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400)*milOfDay;
intisLeapYear=((year&3)==0&&year%100!=0)||year%400==0;
for(month=1;(daySum[month]+((isLeapYear&&month>1)?1:0))*milOfDay<=timeStamp&&month<13;month++){
if(isLeapYear&&month>1)
++daySum[month];
}
timeStamp-=daySum[month-1]*milOfDay;
day=timeStamp/milOfDay;
timeStamp-=day*milOfDay;
hour=timeStamp/milOfHour;
timeStamp-=hour*milOfHour;
minute=timeStamp/60000;
timeStamp-=minute*60000;
second=timeStamp/1000;
milliSecond=timeStamp%1000;
*dateArry[0]=year;
*dateArry[1]=month;
*dateArry[2]=day;
*dateArry[3]=hour;
*dateArry[4]=minute;
*dateArry[5]=second;
*dateArry[6]=milliSecond;
}
//將64位時間戳轉化為時間字元串
voidtransformToDateString(time64timeStamp,char*dateString)
{
time64year,month,day,hour,minute,second,milliSecond;
time64*intp[]={&year,&month,&day,&hour,&minute,&second,&milliSecond};
transformToDate(timeStamp,intp);
sprintf(dateString,"%.4I64d-%.2I64d-%.2I64d%.2I64d:%.2I64d:%.2I64d:%.3I64d",
year,month,day+1,hour,minute,second,milliSecond);
}
intmain()
{
time64time;
chardate[256];
scanf("%lld",&time);
transformToDateString(time,date);
printf("date=%s ",date);
return0;
}
示例運行結果:
63510000999140
date= 2013-07-21 10:56:39:140
㈨ 如何使用C語言程序獲取指定日期的UNIX時間戳
C/C++ code #include #include int main(void) { time_t tick; struct tm tm; char s[100]; tick = time(NULL); tm = *localtime(&tick); strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", &tm); printf("%d: %s\n", (int)tick, s); return 0; }