C语言 time(NULL)

C语言 time(NULL),第1张

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的话,就不保存。

1 你提升的Posix的。

您boost::posix_time::microsec_clock::local_time()获得从微秒分辨率的时钟电流:

boost::posix_time::ptime now = boost::posix_time::microsec_clock::local_time();

然后你在当天的偏移量(因为你的时间输出表单<hours>:<minutes>:<seconds><milliseconds>,我假设他们被计算为当前日期的偏移,如果不是,可以自由的另一个起点,持续时间/间隔):

boost::posix_time::time_duration td = nowtime_of_day();

然后你hours(),minutes(),seconds()访问器来获取相应的值。

不幸的是 CodeGonet,似乎没有成为一个milliseconds()存取器,但是有一total_milliseconds()之一,所以你可以做一个小减法运算得到的剩余毫秒的字符串进行格式化。

然后你sprintf()(或sprintf()_s如果你有兴趣在非便携的VC ++代码只),以这些字段格式化为原料char缓冲液,并安全地包装这个原始的C字符串缓冲区成方便std::string实例。

请参见下面的代码进一步的细节。

输出在控制台是这样的:

11:43:52276

示例代码:

///////////////////////////////////////////////////////////////////////////////

#include <stdioh> // for sprintf()

#include <iostream> // for console output

#include <string> // for std::string

#include <boost/date_time/posix_time/posix_timehpp>

//-----------------------------------------------------------------------------

// Format current time (calculated as an offset in current day) in this form:

//

// "hh:mm:ssSSS" (where "SSS" are milliseconds)

//-----------------------------------------------------------------------------

std::string now_str()

{

// Get current time from the clock, using microseconds resolution

const boost::posix_time::ptime now =

boost::posix_time::microsec_clock::local_time();

// Get the time offset in current day

const boost::posix_time::time_duration td = nowtime_of_day();

//

// Extract hours, minutes, seconds and milliseconds

//

// Since there is no direct accessor "milliseconds()",

// milliseconds are computed _by difference_ between total milliseconds

// (for which there is an accessor), and the hours/minutes/seconds

// values previously fetched

//

const long hours = tdhours();

const long minutes = tdminutes();

const long seconds = tdseconds();

const long milliseconds = tdtotal_milliseconds() -

((hours 3600 + minutes 60 + seconds) 1000);

//

// Format like this:

//

// hh:mm:ssSSS

//

// eg 02:15:40:321

//

// ^ ^

// | |

// 12345678912

// ---------10- --> 12 chars + \0 --> 13 chars should suffice

//

//

char buf[40];

sprintf(buf, "%02ld:%02ld:%02ld%03ld",

hours, minutes, seconds, milliseconds);

return buf;

}

int main()

{

std::cout << now_str() << '\n';

}

///////////////////////////////////////////////////////////////////////////////

Linux C编程获取当前时间用time这个函数,time函数会返回一个time_t类型的时间戳(这个time_t类型实际上是一个长整型,定义在timeh头文件中)。time函数的函数原型是这样的:

time_t time(time_t tloc);

使用time函数需要包含timeh头文件:

#include <timeh>

调用time函数的代码是这样的:

time_t t;

t=time((time_t ) 0);

因为time函数参数的作用和返回值一样,只是用于接收时间戳,所以这里调用time函数可以传入一个空指针,表示只用它的返回值,不用指针参数来接收时间戳。

因为time函数只是返回一个时间戳,如果想打印直观的时间信息,可以把刚才的time_t作为参数调用ctime函数,ctime函数会返回一个字符串,ctime函数的调用是这样的:

printf("The time and date is: %s", ctime(&t));

t就是刚才调用time函数返回的time_t类型变量。

你试试下面的程序:

#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语言 time(NULL)全部的内容,包括:C语言 time(NULL)、如何使用C ++/ C ++11打印当前时间、linux怎么用c获取当前时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9453159.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存