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获取当前时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)