我想獲取當前的時間戳並使用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