扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
首先打开vs2013,发现有新建项目
创新互联主营漳浦网站建设的网络公司,主营网站建设方案,成都App制作,漳浦h5小程序设计搭建,漳浦网站营销推广欢迎漳浦等地区企业咨询
和
打开项目
的选项,选择新建项目。
之后会有一个新建项目的界面,左侧有各种语言的编写环境,比如vb,vc#,vc++,如果编写c语言就选择vc++,因为c++基本兼容c语言。这时的项目不用添加后缀,这相当于一个大的工程。
选择好类型,写好项目名称之后点击确定。
点击下一步
这里比较关键。勾上空项目,不选的话因为程序会默认为你添加一些代码,用不上有时会编译出错。比较适合初学者。
这时已经新建好一个项目了,右键源文件添加新建项。
添加新建项之后命名,c语言的代码一定要修改后缀,将.cpp改为.c,向程序说明这时一个c语言代码。
写好代码后调试运行,如果没有写让程序停留的代码就不要直接按f5,你可以按ctrl+f5调试。
平时默认为debug,如果开发完成一个程序后给别人使用就要选择release版的调试,这样别人在没有vs的环境下也可以使用。
分享
#include time.h
#include stdio.h
time_t _mktime( char *slTime ) /** yyyy-mm-dd **/
{
struct tm tm_t;
int year;
int mon;
int day;
sscanf( slTime, "%4d-%2d-%2d", year, mon, day );
tm_t.tm_year = year - 1900;
tm_t.tm_mon = mon - 1;
tm_t.tm_mday = day;
tm_t.tm_hour = 12;
tm_t.tm_min = 00;
tm_t.tm_sec = 01;
tm_t.tm_wday = 0;
tm_t.tm_yday = 0;
tm_t.tm_isdst = 0;
return mktime( tm_t );
}
int daydiff( char *date1, char *date2 ) /** yyyy-mm-dd **/
{
time_t t1 = _mktime( date1 );
time_t t2 = _mktime( date2 );
time_t diff = abs( t2 - t1 );
return (int)( diff / (24*60*60) );
}
int main()
{
char date1[12], date2[12];
printf( "input date1: " );
scanf( "%s", date1 );
fflush( stdin );
printf( "input date2: " );
scanf( "%s", date2 );
fflush( stdin );
printf( "%s - %s is %d days\n", date1, date2, daydiff(date1, date2) );
}
#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 分钟\n", diff / 60 );
}
扩展资料:
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()\n",difftime(c_end,c_start));
printf("The pause used %f s by time()\n",difftime(t_end,t_start));
system("pause");
return 0;
}
因此,要计算某一函数块的占用时间时,只需要在执行该函数块之前和执行完该函数块之后调用同一个时间计算函数。再调用函数difftime()计算两者的差,即可得到耗费时间。
main()
{
struct date date1,date2;
int days,days1=0,days2=0;
int daytab[]={31,28,31,30,31,30,31,31,30,31,30,31};
int i;
//大概如此可能部分下标存在错误,自己调试修改吧
scanf("%d%d%d",date1.year,date1.month,date1.day);
scanf("%d%d%d",date2.year,date2.month,date2.day);
//计算从当年元月1日到的天数
for(i=0;idate1.month;i++)
{
days1 += daytab[i];
}
if((date1.year%4==0date1.year%100!=0)||(date1.year%400==0) date1.month2)
{
days1++;
}
days1 += date1.day;
//
for(i=date1.year;idate2.year;i++)
{
days2 += 365;
if((date2.year%4==0date2.year%100!=0)||(date2.year%400==0))
{
days2++;
}
}
for(i=0;idate2.month;i++)
{
days2 += daytab[i];
}
if((date2.year%4==0date2.year%100!=0)||(date2.year%400==0) date2.month2)
{
days2 ++;
}
days2 += date1.day;
days=day2-day1;
printf("%d\n",days);
}
计算两个年月日之间的天数,思路是分别算出日期的总天数然后相减。
要考虑闰年的情况,判断闰年的口诀:4年一闰,100年不闰,400年再闰。
((year % 4 == 0 year % 100 != 0) || year % 400 == 0)
网上找了一个(偷懒= =!),修改下如下:
#include stdio.h
int sum(int y,int m,int d)
{
unsigned char x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,s=0;
for(i=1;iy;i++)
if(i%4==0 i%100!=0 || i%400==0)
s+=366;//闰年
else
s+=365;//平年
if(y%4==0 y%100!=0 || y%400==0)
x[2]=29;
for(i=1;im;i++)
s+=x[i];//整月的天数
s+=d;//日的天数
return s;//返回总天数,相对公元1年
}
void main()
{
unsigned char y1,m1,d1,y2,m2,d2;
int s1,s2;
printf("输入第一个年 月 日:");
scanf("%d %d %d",y1,m1,d1);
printf("输入第二个年 月 日:");
scanf("%d %d %d",y2,m2,d2);
s1=sum(y1,m1,d1);
s2=sum(y2,m2,d2);
if (s1 s2)
printf("相差天数:%ld\n",s1-s2);
else
printf("相差天数:%ld\n",s2-s1);
}
以上代码VC6编译测试通过。
虽然这个思路显得有些笨,但是其它算法,代码太长太复杂,要考虑多种情况,不如直接算两个日期距离公元元年1月1日的天数,然后相减
#include stdio.h
#include stdlib.h
#include string.h
#include math.h
#include time.h
int get_days(const char* from, const char* to);
time_t convert(int year,int month,int day);
int main()
{
const char* from="2013-3-15";
const char* to="2015-8-14";
int days=get_days(from,to);
printf("From:%s\nTo:%s\n",from,to);
printf("%d\n",days);
return 0;
}
time_t convert(int year,int month,int day)
{
struct tm info={0};
info.tm_year=year-1900;
info.tm_mon=month-1;
info.tm_mday=day;
return mktime(info);
}
int get_days(const char* from, const char* to)
{
int year,month,day,fromSecond,toSecond;
sscanf(from,"%d-%d-%d",year,month,day);
fromSecond=(int)convert(year,month,day);
sscanf(to,"%d-%d-%d",year,month,day);
toSecond=(int)convert(year,month,day);
return (toSecond-fromSecond)/24/3600;
}
From:2013-3-15
To:2015-8-14
882
Press any key to continue
这才算是用了库函数了···
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流