
C语言time(NULL)是以当前时间为种子,产生随意数。
其中,time(NULL)用来获取当前时间,本质上得到的是一个大整数,然后用这个数来随机数。
time()这个函数其实保存的是一个历史时间,所以需要用NULL把这个历史时间清空一下,time()就会自动保存当前时间了。你可以简单的理解为NULL就是给time()初始化。
c语言调用time()函数括号里为什么要用NULL?
time是这样声明的:time_ttime(time_ttimer)
用法是你先自己定义一个time_t变量,让后把变量的地址传给它。函数会返回自1970年1月1日0点走过的秒数,同时把这个返回值保存在你传进来的那个time_t指向的变量里面
如果你传进来NULL的话,就不保存。
YMD_2_JD() 计算年月日 是 该年的第几天。
YMD_2_WeekDay()计算某年月日 是 星期几,用 WeekDayName[] 显示星期几的字符串。
#include<stdioh>
int YMD_2_JD(int Y, int M, int D){
const short MonthDay[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int JD,i;
JD=D;
for (i=0;i<M;i++) JD+=MonthDay[i];
if (((Y%4==0)&&(Y%100!=0)||(Y%400==0)) && (M>2)) JD++;
return JD;
}
int YMD_2_WeekDay(int Y, int M, int D){
int offset,jd,weekD;
offset = ((Y-1)+(Y-1)/4-(Y-1)/100+(Y-1)/400) % 7 ;
jd = YMD_2_JD(Y,M,D);
weekD = (jd + offset) % 7;
return weekD;
}
char WeekDayName[]={" ","Mon","Tue","Wen","Thu","Fri","Sat","Sun"};
main(){
int Y,M,D;
printf("input year month day, for example 2015 3 31:\n");
scanf("%d %d %d",&Y,&M,&D);
printf("It is %dth day\n",YMD_2_JD(Y,M,D));
printf("It is %s\n",WeekDayName[YMD_2_WeekDay(Y,M,D)]);
return 0;
}
获取日期型字段中的年月日字符的具体代码如下:
string date="2010-5-11";
DateTime dt=DateTimeParse(date);
string yy=dtYearToString();
string mm=dtMonthToString();
string dd=dtDayToString();
上述代码中yy为获取得到的年份2010,mm为获取得到的月份5,dd为获取得到的日子1
扩展资料基本运算符
C使用运算符(operator)来代表算术运算。例如,+运算符可以使它两侧的值加在一起。如果您觉得术语“运算符”听起来比较奇怪,那么请您记住那些东西总得有个名称。
与其被称之为“那些东西”或“数学符号”,被称之为“运算符”似乎看起来更专业一些。
赋值运算符
在C里,符号=不表示“相等”,而是一个赋值运算符。下面的语句是将2014赋给num的变量。
num=2014;
也就是说,符号=的左边是一个变量名,右边是赋给该变量的值。符号=被称为赋值运算符(assignment operator)。再次强调不要把这行代码读做“num等于2014”,而应该读为“将值2014赋给变量num”。赋值运算符的动作是从右到左。
或许变量的名字和变量值之间的区别看起来微乎其微,但是请考虑下面的常量计算机语句:
i=i+1;
在数学上,该语句没有任何意义。如果您给一个有限的数加1,结果不会“等于”这个数本身。它意味着“找到名字为i的变量的值:然后对那个值加1,然后将这个新值赋给名字为i的变量”。
像下面的这条语句: 2014=num;
在C中是没有意义的(确切的说是无效的),原因是2014只是一个常量。您不能将一个值赋给一个常量;那个常量本身就是它的值了。所以,当您准备键入代码时请记住在符号=左边的项目必须是一个变量的名字。
实际上,赋值运算符左边必须指向一个存储位置。最简单的方法是使用变量的名字,但是以后您会看到,“指针”也可以指向一个存储位置。更普遍地,C使用术语“可修改的左值”(modifiable Ivalue)来标志那些我们可以为之赋值的实体。
参考资料
百度百科——c语言
你试试下面的程序:
#include
#include
#include
int
main()
{
clock_t
start,
finish;
double
elapsed_time;
start=clock();
//do
sonething
finish=clock();
elapsed_time
=
finish-start;
}
我在vc++
60下运行,可以得到以毫秒为单位的计时
以前实际上用过,很想对C语言中的时间函数了解多一点,趁着这个寒假,查了些资料,大概把我现在能用到的关于时间的 *** 作在此记录下来。通过几个函数来熟悉C语言中对时间的 *** 作。(注:以下程序均在VS2010上编译通过。)①time()函数。可以通过time()函数来获得日历时间。其原型为: time_t time(time_t timer);一般参数为空,返回值类型time_t是一个长整型数,函数将返回现在的日历时间,即从一个时间点(所有不同版本的Visual C++都是从1970年1月1日0时0分0秒)到现在的经过的秒数。例子程序:#include<stdioh>#include<timeh>void main(){ time_t lt; lt=time(NULL); printf("1970年1月1日0时0分0秒到现在经历了%ld秒%A",lt);}运行结果(结果与程序运行的时间有关,贴出我此时运行出的结果):1970年1月1日0时0分0秒到现在经历了1326975564秒请按任意键继续 ②clock()函数。C语言中的计时函数。函数原型为: clock_t clock(void);clock()函数返回从“开启这个程序进程\”到“程序中调用clock()函数”时之间的CPU时钟计时单元数。返回值类型clock_t也是一个长整型数。在timeh头文件中定义了一个符号常量CLOCKS_PER_SEC,表示一秒钟会有多少个计时单元。所以通过简单的数学知识,可以知道在程序中用clock()/CLOCKS_PER_SEC来表示程序从开始到调用clock()函数时用了多少秒。例子程序:#include<stdioh>#include<timeh>void main(){ clock_t lt; for(int i=0;i<1000000000;i++); lt=clock(); printf("循环执行1000000000个空 *** 作需要%f秒%A",(double)lt/CLOCKS_PER_SEC);}运行结果(在不同的机器上运行的结果可能不一样,下面是在我自己的笔记本上运行的结果):循环执行1000000000个空 *** 作需要3484000秒请按任意键继续 ③使用C库函数来显示日期和时间。首先要介绍一下C语言中的一个日期的结构体类型,tm类型。其在timeh中的定义如下:#ifndef _TM_DEFINEDstruct tm { 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; };#define _TM_DEFINED#endif然后可以介绍有关的函数了。timeh提供了两种不同的函数将日历时间(一个长整型数)转换成我们平时看到的把年月日时分秒分开的时间格式: struct tm gmtime(const time_t timer); struct tm localtime(const time_t timer);其中gmtime()函数是将日历时间转换为世界标准时间(即格林尼治时间),并返回一个tm结构体来保存这个时间,而localtime()函数是将日历时间转换为本地时间(在中国地区获得的本地时间会比世界标准时间晚8个小时)。例子程序:#include<stdioh>#include<timeh>void main(){ struct tm local; time_t t; t=time(NULL); local=localtime(&t); printf("现在北京时间是%d点%A",local->tm_hour); local=gmtime(&t); printf("世界标准时间是%d点%A",local->tm_hour);}运行结果(运行结果与运行的时间有关,我是在早上9点多钟运行这个程序的):现在北京时间是9点世界标准时间是1点请按任意键继续 这样子我们就可以完全才输出此刻的年月日时分秒了,当然需要逐个来输出。其实C库函数还提供了一个很有用的以固定的时间格式来输出年月日时分秒的函数。这两个函数原型如下: char asctime(const struct tm timeptr); char ctime(const time_t timer);asctime()函数是通过tm结构来生成具有固定格式的保存时间信息的字符串,而ctime()是通过日历时间来生成时间字符串。这样下面的例子程序就容易理解了:#include<stdioh>#include<timeh>void main(){ struct tm local; time_t t; t=time(NULL); local=localtime(&t); printf(asctime(local)); local=gmtime(&t); printf(asctime(local)); printf(ctime(&t));}运行结果(我是在早上9点多运行这个程序的):Fri Jan 20 09:55:56 2012Fri Jan 20 01:55:56 2012Fri Jan 20 09:55:56 2012请按任意键继续 C语言还可以以我们规定的各种形式来规定输出时间的格式。要用到时可以查阅相关的资料,限于篇幅,就介绍到这里。④这里介绍计算持续的时间长度的函数。之前已经介绍了使用clock()函数的例子,它可以精确到毫秒级。其实我们也可以使用difftime()函数,但它只精确到秒。该函数的定义如下: double difftime(time_t time1,time_t time0);例子程序:#include<stdioh>#include<timeh>#include<stdlibh>void main(){ time_t start,end; start=time(NULL); for(int i=0;i<1000000000;i++); end=time(NULL); printf("这个循-环用了%f秒%A",difftime(end,start));}运行结果:这个循环用了3000000秒请按任意键继续 ⑤最后介绍mktime()函数。原型如下: time_t mktime(struct tm timer);可以使用函数将用tm结构表示的时间转换为日历时间。其返回值就是转换后的日历时间。这样我们就可以先制定一个分解时间,然后对这个时间进行 *** 作。下面的例子用来计算2012年1月20日是星期几:#include<timeh>#include<stdioh>#include<stdlibh>int main(void){ struct tm t; time_t t_of_day; ttm_year=2012-1900; ttm_mon=0; ttm_mday=20; ttm_hour=0; ttm_min=12; ttm_sec=1; ttm_isdst=1; t_of_day=mktime(&t); printf(ctime(&t_of_day)); return 0;}运行结果:Fri Jan 20 00:12:01 2012请按任意键继续
#include <stdioh>
#include <timeh>
int main()
{
time_t t; //time_t是一种类型,定义time_t类型的t
time(&t); //取得当前时间
printf("%s\n",ctime(&t));// ctime(&t)将日期转为字符串并打印
return 0;
}
以上就是关于C语言 time(NULL)全部的内容,包括:C语言 time(NULL)、用c语言编写程序查询日期、c#中,如何获取日期型字段里的年、月、日等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)