gpt4 book ai didi

C++ ctime() 到日期格式的字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 12:32:22 25 4
gpt4 key购买 nike

我正在尝试更改我的 unix 时间戳的格式。但我没有看到任何自定义格式的选项。

这是我的代码:

tempstring = "Your last login was: ";
time_t lastLogin = player->getLastLoginSaved(); // &lastLogin = Unix timestamp

tempstring += ctime(&lastLogin);
tempstring.erase(tempstring.length() -1);
tempstring += ".";
AddTextMessage(msg, MSG_STATUS_DEFAULT, tempstring.c_str());

这会给我一个输出:

Your last login was: Sun Sep 29 02:41:40 2019.

我怎样才能将其更改为这样的格式?

Your last login was: 29. Sep 2019 02:41:40 CET.

我认为格式应该是:%d。 %b %Y %H:%M:%S CET

但是我怎样才能用 ctime() 做到这一点呢?如果有任何方法可以更改格式,请告诉我。我是 C++ 的新手,所以如果我需要另一个库,请告诉我。

最佳答案

你可以使用time.h。将您的 time_t 分解为 struct tm

struct tm *localtime(const time_t *clock);

struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month 0 to 11*/
int tm_year; /* years since 1900*/
int tm_wday; /* day of the week 0 to 6*/
int tm_yday; /* day in the year 0 to 365*/
int tm_isdst; /* daylight saving time */
};

然后用sprintf格式化,记得加上偏移量。例如。 snprintf(cTimeStr, sizeof(cTimeStr), "%04d-%02d-%02d %02d:%02d:%02d", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour , tm.tm_min, tm.tm_sec);

使用 const char 数组或字符串数​​组获取字符串形式的月份。

另请参阅:https://zetcode.com/articles/cdatetime/

关于C++ ctime() 到日期格式的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58151361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com