linux下使用c++获取指定当天时分string strTime="07:00",自纪元(epoch,1970年1月1日)以来的毫秒数
时间: 2024-10-23 12:07:57 浏览: 31
在Linux环境下使用C++获取指定日期时间(如"07:00")自1970年1月1日(Unix epoch时间点)以来的毫秒数,你可以使用C++标准库中的<chrono>头文件以及相关的函数。这里是一个简单的步骤:
首先,你需要将字符串转换成`std::time_point`,这通常通过`std::istringstream`读取并解析小时和分钟得到。然后,你可以将这个时间点转换为`std::chrono::milliseconds`类型的值,表示自Epoch以来的毫秒数。
以下是示例代码:
```cpp
#include <iostream>
#include <sstream>
#include <chrono>
#include <ctime>
int main() {
std::string strTime = "07:00";
// 解析时间
std::istringstream ss(strTime);
int hour, min;
ss >> hour >> min; // 假设小时和分钟之间有冒号
if (ss.fail()) { // 检查是否完整解析
std::cerr << "Invalid time format!" << std::endl;
return 1;
}
// 创建一个固定的本地时间点(假设是UTC+0)
std::tm tmStruct = {0};
tmStruct.tm_year = 1970 - 1900; // Unix epoch starts from year 1970
tmStruct.tm_mon = 0; // January
tmStruct.tm_mday = 1; // Day is irrelevant here
tmStruct.tm_hour = hour;
tmStruct.tm_min = min;
tmStruct.tm_sec = 0; // Assume seconds are not given
tmStruct.tm_isdst = -1; // Let the system determine daylight saving
std::time_t rawTime = mktime(&tmStruct);
// 获取自Epoch以来的毫秒数
auto epoch_ms = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::time_point<std::chrono::system_clock>::from_time_t(rawTime)).count();
std::cout << "Milliseconds since Epoch: " << epoch_ms << std::endl;
return 0;
}
```
注意,此代码假设输入的时间是格林尼治标准时间(GMT)。如果你需要考虑本地时间,你需要使用`std::chrono::local_time`代替`std::chrono::system_clock`。
阅读全文