黑马程序员技术交流社区
标题:
给做测试题的零基础同学安利几个好用的语法~~
[打印本页]
作者:
煎饼果子超人
时间:
2015-3-7 14:00
标题:
给做测试题的零基础同学安利几个好用的语法~~
本帖最后由 煎饼果子超人 于 2015-3-7 14:04 编辑
因为本来我也是零基础小菜,在做测试题的时候找到几个很好用很方便的视频上没有讲过的语法, 所有想安利给大家,大婶们就当没看见我班门弄斧吧!
第一个是 time 函数,,
这个是我做小明艳遇还是搞基的题时候,我寻思C语言里有没有表示时间,可以直接做时间加减的语法,结果度娘告诉我真有。
表头文件 #include<time.h>
定义函数 time_t mktime(strcut tm * timeptr);
函数说明 mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。
返回值 返回经过的秒数。
我是这么用的
#include <time.h>
int main()
{
//让用户输入日期
time_t t_user;
struct tm stm_user;
printf("请输入日期值(按yyyy/mm/dd格式):");
scanf("%d/%d/%d",&stm_user.tm_year,&stm_user.tm_mon,&stm_user.tm_mday);
stm_user.tm_year-=1900; /*年份值减去1900,得到tm结构中保存的年份序数*/
stm_user.tm_mon-=1; /*月份值减去1,得到tm结构中保存的月份序数*/
stm_user.tm_hour = 0;
stm_user.tm_min = 0;
stm_user.tm_sec = 0;
//把struct tm转成time_t的时间戳
t_user = mktime(&stm_user); /* 若用户输入的日期时间有误,则函数返回值为-1*/
if(-1==t_user)
{
printf("输入的日期时间格式出错!\n");
return 0;
}
printf("输入的时间戳%ld\n",t_user);
//定义默认的时间 2006年1月1日
time_t t_default;
struct tm stm_default;
stm_default.tm_year = 2006 - 1900;
stm_default.tm_mon = 0;
stm_default.tm_mday = 1;
stm_default.tm_hour = 0;
stm_default.tm_min = 0;
stm_default.tm_sec = 0;
t_default = mktime(&stm_default);
if(stm_user.tm_year < stm_default.tm_year)
{
printf("输入的日期不能在2006年1月1日之前!\n");
return 0;
}
printf("默认的时间戳%ld\n",t_default);
//计算时间差
long t_cha = t_user - t_default ;//用户输入的时间戳 减去 默认2006年的时间戳,等于时间差(秒)
long day = t_cha / 60 /60 / 24;
printf("2006年1月1日 到 %d/%02d/%02d 共%ld秒,%ld天\n",
stm_user.tm_year+1900,stm_user.tm_mon,stm_user.tm_mday ,t_cha,day);
return 0;
}
复制代码
这样就不用考虑闰年问题了,但是要考虑夏时令问题
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()为负。*/
long int tm_gmtoff; /*指定了日期变更线东面时区中UTC东部时区正秒数或UTC西部时区的负秒数*/
const char *tm_zone; /*当前时区的名字(与环境变量TZ有关)*/
作者:
煎饼果子超人
时间:
2015-3-8 12:39
先马后编~~~~~~华丽丽的分割线
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2