如何在C++中獲得uint
unix時間戳?我搜索了一下,似乎大多數方法都在尋找更復雜的方法來表示時間。我能不能把它作爲uint
?使用C++獲取Unix時間戳
回答
#include<iostream>
#include<ctime>
int main()
{
std::time_t t = std::time(0); // t is an integer type
std::cout << t << " seconds since 01-Jan-1970\n";
return 0;
}
這假定'std :: time()'自1970年以來就有了幾秒鐘的時間。在很多系統上(POSIX和Windows,我相信)都是如此,但語言標準並不能保證這一點。 – 2016-06-24 02:44:34
#include <iostream>
#include <sys/time.h>
using namespace std;
int main()
{
unsigned long int sec= time(NULL);
cout<<sec<<endl;
}
'time()'返回'time_t'類型的結果,原型可以是有符號的,無符號的,甚至是浮點的。爲什麼要將結果存儲在'long int'中?爲什麼使用'
我明白,但我認爲在任何兼容POSIX的OS中都存在time.h和sys/time.h。 同樣你也完全正確,time_t也可以是負值,因爲它表示爲從1970-01-01T00:00Z過去的秒數。 – anijhaw 2016-06-27 20:20:01
最常見的意見是錯的,你不能僅僅依靠time()
。這是用於相對時間:ISO C++沒有指定1970-01-01T00:00Z
是time_t(0)
更糟糕的是,你不能容易地弄清楚,要麼。當然,你可以找到time_t(0)
的日曆日期gmtime
,但是如果是2000-01-01T00:00Z
,你會怎麼做? 1970-01-01T00:00Z
和2000-01-01T00:00Z
之間有幾秒鐘?由於閏秒,它當然不是60的倍數。
「如何在C++中獲得uint unix時間戳?」 - 給定 - 如你所說 - 你可以稍後調用'gmtime()'來獲得任何時間戳編碼的可讀表示,不管參考引用是什麼,time()都不能滿足問題中請求的功能日期或適用於區間計算? – 2012-08-23 06:58:54
要在非UNIX系統上獲得** UNIX **時間戳,您必須知道本地時期和「1970-01-01T00:00Z」之間的差異(以秒爲單位)。沒有辦法做到這一點。 – MSalters 2012-08-23 07:48:54
出於某種原因,我得到的印象是在UNIX(或Linux等)機器上的代碼問題,但現在我看到你來自哪裏。好奇:你有沒有發現time_t(0)不是1970-01-01T00:00Z的實際系統?只需幾分鐘即可解決任何給定系統上的偏移量問題(在UNIX系統上使用非UNIX time_t(0)並獲取time_t),但感謝您解釋您的擔憂。 – 2012-08-23 23:35:37
Windows使用一個不同的時代和時間單位:看 Convert Windows Filetime to second in Unix/Linux
在Windows什麼的std ::時間()返回的是(迄今)未知我(;-))
我創建了一個全球定義更多的信息:
#include <iostream>
#include <ctime>
#include <iomanip>
#define INFO std::cout << std::put_time(std::localtime(&time_now), "%y-%m-%d %OH:%OM:%OS") << " [INFO] " << __FILE__ << "(" << __FUNCTION__ << ":" << __LINE__ << ") >> "
#define ERROR std::cout << std::put_time(std::localtime(&time_now), "%y-%m-%d %OH:%OM:%OS") << " [ERROR] " << __FILE__ << "(" << __FUNCTION__ << ":" << __LINE__ << ") >> "
static std::time_t time_now = std::time(nullptr);
使用方法如下:
INFO << "Hello world" << std::endl;
ERROR << "Goodbye world" << std::endl;
採樣輸出:
16-06-23 21:33:19 [INFO] src/main.cpp(main:6) >> Hello world
16-06-23 21:33:19 [ERROR] src/main.cpp(main:7) >> Goodbye world
將這些行放在頭文件中。我發現這對於調試非常有用。
- 1. 獲取unix時間戳
- 2. 在Lua中獲取UTC UNIX時間戳
- 3. UNIX文件獲取由時間戳
- 4. 如何從numpy.datetime64獲取unix時間戳
- 5. 獲取整數UNIX時間戳
- 6. Oracle使用UNIX時間戳
- 7. C#Unix時間戳到DateTime
- 8. C#:Unix時間戳和日期時間
- 9. 無法獲取日期xAxis使用unix時間戳
- 10. 在C++中獲取作爲字符串的unix時間戳
- 11. Unix時間戳到LDAP時間戳
- 12. Unix時間戳到FAT時間戳
- 13. 時間戳:iso8601 vs unix時間戳
- 14. 獲取UNIX時間戳的正確時間
- 15. 在unix時間戳(php)中獲取昨天的開始時間
- 16. PHP Unix時間戳
- 17. PHP UNIX時間戳
- 18. PostgreSQL:SQL時間戳使用libpq的Unix時間戳
- 19. C#獲取帶時區的時間戳
- 20. 轉換Unix時間戳STR和STR到UNIX時間戳在python
- 21. 轉換秒,在C++ UNIX時間戳
- 22. 轉換日期在C++ UNIX時間戳
- 23. 即時到Unix時間戳
- 24. UNIX時間戳小時前
- 25. 如何獲得UNIX時間戳淨
- 26. 獲取從MySQL數據庫Unix時間戳和偏移應用
- 27. 使用clock()獲取時間戳(Visual Studio 2010,C/C++)
- 28. Sqlite C/C++ API - 使用select查詢獲取時間戳值
- 29. IOS日期選取器unix時間戳
- 30. 如何提取Unix時間戳和獲取日期
「Epoch」當然是Unix和Linux上的Unix版本,但這不是通用的。 – MSalters 2011-05-17 08:09:09