如何在 C++ 中使用 unix 时间从 time_t 格式化 time/date 字符串

How to format time/date Strings from a time_t with unix time in C++

我有一个 time_t 值,我需要从中提取年、月、dayOfMonth、hourOfDay、分钟和秒(作为整数)的值。如果可能的话,我想尽量减少对库的依赖,但如果有一个库函数,你可以合理地确定它将始终可用,那就没问题了。 time_t 值应该已经针对时区进行了调整,所以不用担心。

由于在一个相当大的公司项目中工作并使用远程服务器构建应用程序,我实际上不知道我们使用的是哪个版本的 C++ 但它很可能是 C++11(可能是 C++ 98 但我对此表示怀疑,而且几乎可以肯定不是 C++17)。

如果您有 time_t(来自 <time.h>),则不需要任何额外的库。您可以只使用也在 <time.h>:

中的 tm 结构和 localtime 函数
#include <iostream>
#include <time.h>
int main() {
    time_t t;
    t = time(NULL); // or some other value
    tm *timeNow = localtime(&t);
    std::cout << "Year: " << timeNow->tm_year+1900 << std::endl;
    std::cout << "Month: " << timeNow->tm_mon << std::endl;
    std::cout << "Day: " << timeNow->tm_mday << std::endl;
    std::cout << "Hour: " << timeNow->tm_hour << std::endl;
    std::cout << "Minute: " << timeNow->tm_min << std::endl;
    std::cout << "Second: " << timeNow->tm_sec << std::endl;
}