C语言怎么判断时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言怎么判断时间相关的知识,希望对你有一定的参考价值。

用c语言怎么判断当前日期是不是已经过了2011-01-01?

本人(无界)用C-Free编写,亲测可用

#include <stdio.h>
#include <time.h>     
 
int main()

    time_t t_ntime;       //t_ntime用于储存当前时间
    struct tm sttm_time;  //声明tm结构体sttm_time。tm结构体定义在头文件time.h中 
 //以下给结构体sttm_time赋值,2011-1-1时的数值查的如下 
    sttm_time.tm_sec=0;    
    sttm_time.tm_min=0;    
    sttm_time.tm_hour=0;   
    sttm_time.tm_mday=2;   //因为要超过2011-1-1,所以判断的依据是到第二天2011-1-2 
    sttm_time.tm_mon=0;    
    sttm_time.tm_year=111; 
    sttm_time.tm_wday=0;   
    sttm_time.tm_yday=1;   
    sttm_time.tm_isdst=-1;
     
    t_ntime=time(NULL);     //获取当前本地时间 
    if(t_ntime>=mktime(&sttm_time)) printf("当前本地时间已经超过2011-1-1\\n");//判断 
    else printf("当前本地时间未超过2011-1-1\\n"); 
    return(0); 

---“无界”回答

参考技术A /*程序思路是:把冒号作为字符串分隔标志,用一个变量记录冒号前后字符的个数,例如输入的字符串是20:10,则先判断冒号前面的字符个数是否大于2,若是,则该字符串不是时间格式*/#include#includeint isTime(char *str) int i,j,flag=1; //初始flag为1 char ch; for(i=0,j=0;(ch=*(str+i))!='\0';i++) if(ch==':') //当读到字符':'时判断字符个数是否大于2 if(j>2) //若j>2表示大于2,也就与时间格式不一致,则令flag=0 flag=0; j=0; //读到字符':'时在令j为0以重新计数 else j++; if(j>2) flag=0; //由于读到上面的for循环条件是"若读的字符为'\0',则退出循环",所以这里再次判断j是否大于0 return flag;void main() char string[10]; printf("Input the string:"); gets(string); if(isTime(string)) printf("True"); //如果flag为1则表示输入的字符串是时间格式,打印True else printf("False"); //否则打印False getch(); 如果要判断输入的数字是否在0到24之间的话,需要再定义两个字符串用来接收冒号前后的字符串,并调用库函数atoi(const*str)将字符串转化成数字再判断,有点麻烦哦! 参考技术B #include // 必须的时间函数头文件time_t // 时间类型(time.h 定义)struct tm // 时间结构,time.h 定义如下:int tm_sec;int tm_min;int tm_hour;int tm_mday;int tm_mon;int tm_year;int tm_wday;int tm_yday;int tm_isdst; time ( &rawtime ); // 获取时间,以秒计,从1970年1月一日起算,存于rawtimelocaltime ( &rawtime ); //转为当地时间,tm 时间结构asctime() // 转为标准ASCII时间格式://就是直接打印tm,tm_year 从1900年计算,所以要加1900,月tm_mon,从0计算,所以要加1这是获取系统时间,自己再加上一个判断吧。

用c语言判断网址怎么做呢?

/*
问题地址:http://zhidao.baidu.com/question/317437658.html

详解:
标准的网址(URL)格式是这样的:
http://user:pass@myserver:port/myapp1/myapp2/index.html?key1=value2&key2=value2#anchor
其中:
[1] http 是协议类型,同样的还有 ftp 等。【可省略,一般浏览器默认都是 http】
[2] user 是用户名,pass 是密码。【可省略】
[3] myserver 可以是服务器的 ip 或者域名,
如百度的 ip = 220.181.112.143 , 域名是:www.baidu.com
【这个不能省略】
[4] port 是端口。【可省略,一般默认都是 80】
[5] myapp1,myapp2 是应用程序目录。【可省略】
index.html 是当前页面【可省略,默认是 index.html,default.html 等】
[6] key1,value1,key2,value2 是传递给网站的参数,【可省略】
[7] anchor 是网页内的锚点

合法的网址举例:
www.baidu.com
http://__anglfish:123@www.baidu.com:80/
http://zhidao.baidu.com/question/311110938.html?an=0&si=1

判断网址算法:
最简单的当然是正则表达式了。
我们看到标准网址(URL)的 7 个部分,有 6 个分割符号,分别是:
://
@
:
/
?
#
在浏览器里面,只有第 3 部分是必须填写的,也是我们日常写的最多的。

用到的资源文件:
头文件 deelx.h,可以到:http://www.regexlab.com/zh/deelx/下载
下载后放到和源程序同一个目录下即可。
*/

#include <stdio.h>
#include "deelx.h"

int main(int argc, char * argv[])

char text[1000] = "http://user:pass@myserver.com:800/myapp1/myapp2/index.html?key1=value1&key2=value2#anchor";
// 判断合法网址的正则表达式
static CRegexpT <char> regexp
(
"(([:alpha:]+)\\://)?((\\w+)\\:(\\w+)@)?(\\w+(\\.\\w+)*)(\\:(\\d+))?((/\\w+)*(\\.\\w+)?)?(\\?((\\w+=\\w+&)*(\\w+=\\w+)))?(#((\\w+)))?)"
);
int i;

printf("输入一个网址:");
while(scanf("%s",text))

MatchResult result = regexp.Match(text);
if ( result.IsMatched() )

/*
for(i=0;i<result.MaxGroupNumber();i++)

printf("%d=%.*s\n", i,result.GetGroupEnd(i) - result.GetGroupStart(i), text + result.GetGroupStart(i));

*/

// 解析网址
printf("网址:%.*s\n", result.GetGroupEnd(0) - result.GetGroupStart(0), text + result.GetGroupStart(0));
printf("协议类型:%.*s\n",result.GetGroupEnd(2) - result.GetGroupStart(2), text + result.GetGroupStart(2));
printf("用户名:%.*s\n",result.GetGroupEnd(4) - result.GetGroupStart(4), text + result.GetGroupStart(4));
printf("用户密码:%.*s\n",result.GetGroupEnd(5) - result.GetGroupStart(5), text + result.GetGroupStart(5));
printf("服务器IP或域名:%.*s\n",result.GetGroupEnd(6) - result.GetGroupStart(6), text + result.GetGroupStart(6));
printf("服务器端口:%.*s\n",result.GetGroupEnd(9) - result.GetGroupStart(9), text + result.GetGroupStart(9));
printf("应用程序目录:%.*s\n",result.GetGroupEnd(10) - result.GetGroupStart(10), text + result.GetGroupStart(10));
printf("查询参数:%.*s\n",result.GetGroupEnd(14) - result.GetGroupStart(14), text + result.GetGroupStart(14));
printf("锚:%.*s\n\n",result.GetGroupEnd(18) - result.GetGroupStart(18), text + result.GetGroupStart(18));


else

printf("\"%s\" 是一个非法的网址!!!\n",text);

printf("输入一个网址:");


return 0;


/*
运行结果:

输入一个网址:http://user:pass@myserver.com:800/myapp1/myapp2/index.html?key1=value1&key2=value2#anchor
网址:http://user:pass@myserver.com:800/myapp1/myapp2/index.html?key1=value1&key2=value2#anchor
协议类型:http
用户名:user
用户密码:pass
服务器IP或域名:myserver.com
服务器端口:800
应用程序目录:/myapp1/myapp2/index.html
查询参数:key1=value1&key2=value2
锚:anchor
*/
参考技术A compare()函数比较字符串的前几个字符是否是http追问

是的 跟http://www.baidu.com/一样

追答

不明白你的意思。

以上是关于C语言怎么判断时间的主要内容,如果未能解决你的问题,请参考以下文章

c语言 怎么判断输入的是否数字?

c语言结构体怎么判断是不是为空

C语言,怎么判定,是否数字?

C语言判断输入格式要怎么写?

闰年用c语言怎么写?

用c语言判断网址怎么做呢?