我想获取当前的时间戳并使用fprintf将其打印出来。如何获得C中的unix时间戳作为int?
32
A
回答
42
对于32位系统:
fprintf(stdout, "%u\n", (unsigned)time(NULL));
对于64位系统:
fprintf(stdout, "%lu\n", (unsigned long)time(NULL));
10
具有第二精度,您可以打印tv_sec
字段timeval
结构,您从gettimeofday()
函数获得的结构。例如:
#include <sys/time.h>
#include <stdio.h>
int main()
{
struct timeval tv;
gettimeofday(&tv, NULL);
printf("Seconds since Jan. 1, 1970: %ld\n", tv.tv_sec);
return 0;
}
编译和运行的实施例:
$ gcc -Wall -o test ./test.c
$ ./test
Seconds since Jan. 1, 1970: 1343845834
但请注意,它是自纪元一段时间,所以long int
用于拟合的秒数这些天。
也有打印人类可读时间的功能。详情请参阅this manual page。在这里不用使用ctime()
一个例子:
#include <time.h>
#include <stdio.h>
int main()
{
time_t clk = time(NULL);
printf("%s", ctime(&clk));
return 0;
}
实施例运行&输出:
$ gcc -Wall -o test ./test.c
$ ./test
Wed Aug 1 14:43:23 2012
$
+0
'gettimeofday'是实际的Linux系统调用。 – 2017-10-07 02:55:40
20
只是把由time()
#include <stdio.h>
#include <time.h>
int main(void) {
printf("Timestamp: %d\n",(int)time(NULL));
return 0;
}
你想要什么返回值?
$ gcc -Wall -Wextra -pedantic -std=c99 tstamp.c && ./a.out
Timestamp: 1343846167
要得到微秒从新纪元,从C11上,便携的方法是使用
int timespec_get(struct timespec *ts, int base)
不幸的是,C11尚未提供无处不在,所以截至目前,最接近便携是使用POSIX函数clock_gettime
或gettimeofday
(在POSIX.1-2008中标记为过时,其中推荐clock_gettime
)中的一个。
两个函数的代码几乎是相同的:
#include <stdio.h>
#include <time.h>
#include <stdint.h>
#include <inttypes.h>
int main(void) {
struct timespec tms;
/* The C11 way */
/* if (! timespec_get(&tms, TIME_UTC)) { */
/* POSIX.1-2008 way */
if (clock_gettime(CLOCK_REALTIME,&tms)) {
return -1;
}
/* seconds, multiplied with 1 million */
int64_t micros = tms.tv_sec * 1000000;
/* Add full microseconds */
micros += tms.tv_nsec/1000;
/* round up if necessary */
if (tms.tv_nsec % 1000 >= 500) {
++micros;
}
printf("Microseconds: %"PRId64"\n",micros);
return 0;
}
0
#include <stdio.h>
#include <time.h>
int main()
{
time_t seconds;
seconds = time(NULL);
printf("Seconds since January 1, 1970 = %ld\n", seconds);
return(0);
}
而且会得到类似的结果:
秒自1970年1月1日= 1476107865
相关问题
- 1. 如何获得UNIX时间戳净
- 2. 在C++中获取作为字符串的unix时间戳
- 3. 如何获得上个月特定时间的Unix时间戳
- 4. 如何将时间戳转换为php中的unix时间戳?
- 5. 如何从PHP日期时间获得unix时间戳?
- 6. 如何在java中获得真正的unix时间戳
- 7. C++:我如何获得unix时间?
- 8. 如何在UNIX中将UNIX时间戳转换为EST时间?
- 9. 如何在Clojure中获得Unix时间戳?
- 10. 使用C++获取Unix时间戳
- 11. 如何从numpy.datetime64获取unix时间戳
- 12. PHP如何获得unix服务器的时间戳?
- 13. 如何返回一个UNIX时间戳为特定的UNIX时间戳PHP
- 14. PHP如何从时间戳获得日/时间的时间戳
- 15. 如何将NSDate转换为Objective C/iPhone中的Unix时间戳?
- 16. C#Unix时间戳到DateTime
- 17. PHP UNIX时间戳int(10)DST
- 18. 获取unix时间戳
- 19. 如何将Etc/GMT + 2时区中的时间戳转换为unix时间戳?
- 20. 如何从postgres获取时间戳作为时间戳?
- 21. 如何在Unix中获得GMT时间?
- 22. C#:Unix时间戳和日期时间
- 23. 如何将PHP中的unix时间戳转换为ISO8601时间戳?
- 24. 如何将Unix时间戳转换为AIX 5.3中的可读时间戳
- 25. 如何在ISO中将ISO8601时间戳转换为unix时间?
- 26. 如何将UTC时间转换为Unix时间戳在swift中?
- 27. sqlite中的Unix时间戳?
- 28. Jenkins中的Unix时间戳
- 29. Javascript:未来时间为UNIX时间戳
- 30. 将时间转换为Unix时间戳
有什么特别的原因它需要特别是一个int? – 2012-08-01 18:29:05
@ DennisMeng如果我不得不猜测,他可能想要得到时间戳作为返回码,并删除输出处理。 – 2017-01-07 11:09:41
对不起,necrobump这个,但*技术上*所有这些答案都是不正确的,因为自从Unix纪元以来''时间'**不保证**;根据维基百科,它可以是供应商选择的任何时代。它也表示1900有时被使用。不过,我认为这是自所有即使远程智能系统上的Unix时代开始。 – Markasoftware 2017-05-25 01:10:37