如何在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. 如何从numpy.datetime64获取unix时间戳
- 2. UNIX文件获取由时间戳
- 3. 在Lua中获取UTC UNIX时间戳
- 4. Oracle使用UNIX时间戳
- 5. C#Unix时间戳到DateTime
- 6. 无法获取日期xAxis使用unix时间戳
- 7. 在C++中获取作为字符串的unix时间戳
- 8. 时间戳:iso8601 vs unix时间戳
- 9. 在unix时间戳(php)中获取昨天的开始时间
- 10. 获取UNIX时间戳的正确时间
- 11. PostgreSQL:SQL时间戳使用libpq的Unix时间戳
- 12. C#获取带时区的时间戳
- 13. 转换秒,在C++ UNIX时间戳
- 14. 即时到Unix时间戳
- 15. 如何提取Unix时间戳和获取日期
- 16. 使用JavaScript获取唯一时间戳
- 17. 使用MySQL获取时间戳
- 18. 获取特定时区的unix时间戳
- 19. 熊猫:使用Unix时间戳时间戳作为日期时间索引
- 20. UNIX的AWSDynamoDBQueryExpression时间戳
- 21. 日期到Unix时间戳
- 22. 转换Unix时间戳
- 23. unix时间戳和php
- 24. NSTimeInterval到unix时间戳
- 25. 蜂巢UNIX时间戳
- 26. Jenkins中的Unix时间戳
- 27. sqlite中的Unix时间戳?
- 28. UNIX时间戳到MySQL DATETIME
- 29. PHP比较UNIX时间戳
- 30. 如何获得C中的unix时间戳作为int?
“Epoch”当然是Unix和Linux上的Unix版本,但这不是通用的。 – MSalters 2011-05-17 08:09:09