Par*_*ani 8 c linux datetime gnu timespec
我想将毫秒转换为GNU(GCC)linux的timespec结构.我试过以下代码.
timespec GetTimeSpecValue(unsigned long milisec)
{
struct timespec req;
//long sec = (milisecondtime /1000);
time_t sec = (time_t)(milisec/1000);
req->tv_sec = sec;
req->tv_nsec = 0;
return req;
}
Run Code Online (Sandbox Code Playgroud)
运行此代码会给我以下错误.
在'GetTimeSpecValue'之前预期'=',',',';','asm'或'__attribute__'
我还在代码中包含了time.h文件.
小智 11
该timespec
结构以两个部分表示时间 - 秒和纳秒.因此,从毫秒转换的算法非常简单.一秒有千毫秒,一毫秒有一千微秒,一微秒有一千纳秒,为此我们感谢SI.因此,我们首先需要将毫秒除以千来获得几秒钟.比方说,例如,1500毫秒/ 1000 = 1.5秒.给定整数算术(不是浮点),剩余部分被丢弃(即1500/1000等于1,而不是1.5).然后我们需要取一个表示毫秒绝对不到一秒的余数,并将其乘以一百万以将其转换为纳秒.为了得到除以1000的余数,我们使用模块运算符(%
)(即1500 % 1000 is equal to 500
).例如,让我们将4321毫秒转换为秒和纳秒:
知道了上面的内容,唯一剩下的就是编写一些C代码.有些事情你没有做对:
struct
.例如,而不是说timespec
你说struct timespec
.但是,在C++中,您不必这样做(不幸的是,在我看来).编辑:这是矛盾的(从C中的函数返回`struct`).
好的,说够了.下面是一个简单的C代码示例:
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
static void ms2ts(struct timespec *ts, unsigned long ms)
{
ts->tv_sec = ms / 1000;
ts->tv_nsec = (ms % 1000) * 1000000;
}
static void print_ts(unsigned long ms)
{
struct timespec ts;
ms2ts(&ts, ms);
printf("%lu milliseconds is %ld seconds and %ld nanoseconds.\n",
ms, ts.tv_sec, ts.tv_nsec);
}
int main()
{
print_ts(1000);
print_ts(2500);
print_ts(4321);
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你.祝好运!
归档时间: |
|
查看次数: |
29010 次 |
最近记录: |