時間戳c語言
『壹』 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語言 驗證時間戳
有,時間戳一般是一個毫秒值。有系統函數可以獲取。具體是啥記不清了
『叄』 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語言如何獲取系統當前時間的函數
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>
void main()
{
time_t t;
struct tm *pt ;
char *pc ;
time(&t);
pc=ctime(&t) ; printf("ctime:%s", pc );
pt=localtime(&t) ; printf("year=%d", pt->tm_year+1900 );
}
時間結構體struct 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代表一月) - 取值區間為[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()為負。*/
};
『伍』 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語言程序獲取指定日期的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; }
『柒』 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語言里怎麼獲取當前時間和日期(精確到毫秒)
clock_t t1,t1;
t1=clock();
..
t2=clock();
(t2-t1)/18.2的結果是秒,不過這是小數,可以得到毫秒級
『玖』 C語言中 如何獲取系統時間
#include<time.h>
int main()
{
time_t timep;
struct tm *p;
time (&timep);
p=gmtime(&timep);
printf("%d ",p->tm_sec); /*獲取當前秒*/
printf("%d ",p->tm_min); /*獲取當前分*/
printf("%d ",8+p->tm_hour);/*獲取當前時,這里獲取西方的時間,剛好相差八個小時*/
printf("%d ",p->tm_mday);/*獲取當前月份日數,范圍是1-31*/
printf("%d ",1+p->tm_mon);/*獲取當前月份,范圍是0-11,所以要加1*/
printf("%d ",1900+p->tm_year);/*獲取當前年份,從1900開始,所以要加1900*/
printf("%d ",p->tm_yday); /*從今年1月1日算起至今的天數,范圍為0-365*/
}
拓展資料:
C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSI C,作為C語言最初的標准。目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。
C語言是一門面向過程的計算機編程語言,與C++,Java等面向對象的編程語言有所不同。
其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
『拾』 c語言兩日期相差天數
#include <stdio.h>
#include<math.h>
int main()
{
int s=0,m1,d1,y1,y2,m2,d2,i,a[12]={31,28,31,30,31,30,31,31,30,31,30,31},b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
scanf("%d %d %d",&y1,&m1,&d1);
scanf("%d %d %d",&y2,&m2,&d2);
if(y1==y2)
{
if((y1%100!=0&&y1%4==0)||y1%400==0)
{
while(m1<m2)
{s=b[m1-1]+s;
m1=m1+1;
}
}
else
{
while(m1<m2)
{s=a[m1-1]+s;
m1=m1+1;
}
}
printf("%d days\n",s+d2-d1);
}
else
{
while(y1<y2)
{
if(m1<=2)
{
if((y1%100!=0&&y1%4==0)||y1%400==0)
{s=366+s;}
else
{s=365+s;}
y1=y1+1;
}
else
{
y1=y1+1;
if((y1%100!=0&&y1%4==0)||y1%400==0)
{s=366+s;}
else
{s=365+s;}
}
}
if(m1<=m2)
{
if((y2%100!=0&&y2%4==0)||y2%400==0)
{for(i=0;m1<m2;i++)
{s=b[m1-1]+s;
m1=m1+1;
}
}
else
{for(i=0;m1<m2;i++)
{s=a[m1-1]+s;
m1=m1+1;
}
}
printf("%d days\n",s+d2-d1);
}
else
{
if((y2%100!=0&&y2%4==0)||y2%400==0)
{
while(m1>m2)
{s=b[m1-1]+s;
m1=m1-1;
}
}
else
{
while(m1>m2)
{s=a[m1-1]+s;
m1=m1-1;
}
}
printf("%d days\n",s+d2-d1);
}
}
return 0;
}
你試試看!