c語言時間變數
❶ 用c語言編程 定義一個結構體變數(包括年、月、日)。計算該日在本年中是第幾天,注意閏年問題。
#include<stdio.h>
structy_m_d
{
intyear;
intmonth;
intday;
};
intdays(structy_m_ddate)
{
intsum=date.day;
inta[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
inti;
for(i=1;i<date.month;i++)
{
sum+=a[i];
}
if(date.month>2&&((date.year%4==0&&date.year%100!=0)||date.year%400==0))//若閏年,且晚於2月,加一天
sum++;
returnsum;
}
intmain()
{
structy_m_ddate;
intday_sum;
printf("請輸入年月日(以空格隔開):");
scanf("%d%d%d",&date.year,&date.month,&date.day);
day_sum=days(date);
printf("%d年%d月%d日是%d年的第%d天 ",date.year,date.month,date.day,date.year,day_sum);
return0;
}
執行結果如下:
輸入:2016年3月1日
輸出:該日是當年的第61天。2016年是閏年,所以3月1日是第61天=31+29+1
❷ C語言怎樣獲取系統當前的時間並把它保存到定義的變數中
C語言中讀取系統時間的函數為time(),其函數原型為:
#include <time.h>
time_t time( time_t * ) ;
time_t就是long,函數返回從1970年1月1日(MFC是1899年12月31日)0時0分0秒,到現在的的秒數。
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 *變數來接收結果
例:
#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);
}
時間結構體struct tm 說明:
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()為負。*/
};