c++ 获得当前时间戳
时间: 2024-10-27 09:07:58 浏览: 28
在C++中,获取当前时间戳通常使用`chrono`库提供的功能。你可以使用`std::chrono::high_resolution_clock`来获取高精度的时间点,然后通过`std::chrono::duration_cast<>()`将其转换为时间戳(通常是毫秒或微秒)。下面是一个简单的示例:
```cpp
#include <iostream>
#include <chrono>
int64_t getCurrentTimestamp() {
std::chrono::high_resolution_clock::time_point now = std::chrono::high_resolution_clock::now();
return std::chrono::duration_cast<std::chrono::microseconds>(now.time_since_epoch()).count(); // 返回的是自纪元以来的微秒数
}
int main() {
int64_t timestamp = getCurrentTimestamp();
std::cout << "Current timestamp (in microseconds): " << timestamp << std::endl;
return 0;
}
```
在这个例子中,`getCurrentTimestamp()`函数返回的是一个表示当前时间距离1970年1月1日00:00:00 UTC(Unix纪元)的微秒数。
相关问题
C++ 获取当前时间戳 精确到毫秒 不使用chrono库
如果你不想使用C++11的chrono库,也可以使用C++标准库中的ctime库来获取当前时间戳,然后再将其转换为精确到毫秒的时间戳。
以下是示例代码:
```cpp
#include <ctime>
#include <iostream>
int main() {
// 获取当前时间
std::time_t now = std::time(nullptr);
// 转换为精确到毫秒的时间戳
long long int value = now * 1000LL;
// 输出时间戳
std::cout << "当前时间戳(毫秒): " << value << std::endl;
return 0;
}
```
运行结果类似于:
```
当前时间戳(毫秒): 1640427490455
```
其中,`std::time(nullptr)`获取当前时间戳,`now * 1000LL`将时间戳转换为精确到毫秒的时间戳。需要注意的是,这种方法得到的时间戳是以1970年1月1日 00:00:00为起点的。
c++ 获取当前时间戳并转换为字符串,精确到毫秒
在C++中获取当前时间戳可以使用`std::chrono::system_clock::now()`,它返回一个`std::chrono::time_point`类型的对象,表示当前时间点。而要将其转换为字符串,需要使用`std::put_time`函数将时间点转换为`std::tm`类型的结构体,再使用`std::strftime`函数将`std::tm`类型的结构体转换为字符串。具体实现如下:
```c++
#include <iostream>
#include <chrono>
#include <ctime>
#include <iomanip>
#include <cstring>
int main() {
auto now = std::chrono::system_clock::now();
auto now_ms = std::chrono::time_point_cast<std::chrono::milliseconds>(now);
auto value = now_ms.time_since_epoch().count();
std::time_t t = value / 1000;
std::size_t fractional_seconds = value % 1000;
std::tm* now_tm = std::localtime(&t);
char time_str[30];
std::strftime(time_str, sizeof(time_str), "%Y-%m-%d %H:%M:%S", now_tm);
std::sprintf(time_str + std::strlen(time_str), ".%03d", static_cast<int>(fractional_seconds));
std::cout << "当前时间为:" << time_str << std::endl;
return 0;
}
```
其中,`auto now = std::chrono::system_clock::now();`获取当前时间点,`auto now_ms = std::chrono::time_point_cast<std::chrono::milliseconds>(now);`将时间点精确到毫秒级别,`auto value = now_ms.time_since_epoch().count();`获取时间戳,单位为毫秒。
接下来,`std::time_t t = value / 1000;`将时间戳转换为`std::time_t`类型,`std::size_t fractional_seconds = value % 1000;`获得毫秒数。
然后,使用`std::localtime`函数将时间戳转换为本地时间,再使用`std::strftime`函数将时间转换为字符串。最后使用`std::sprintf`函数将毫秒数添加到字符串中,输出结果即可。
阅读全文