我在main上编写此代码,效果很好,但是当我尝试将其放在函数或类方法中时,它不起作用,为什么? 同样,当我调试此代码时,似乎不编译time_t和struct tmp。
const char* getFormat() {
time_t rawtime;
struct tm * timeinfo;
char buffer[80];
time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(buffer, sizeof(buffer), "%d.%m.%Y H%:%i", timeinfo);
return buffer;
}
答案 0 :(得分:1)
好吧,总结一下其他评论者所说的话(编辑:并正确完成工作),此代码可以正常工作:
#include <time.h>
#include <string>
#include <iostream>
std::string getFormat ()
{
time_t rawtime;
time(&rawtime);
struct tm *timeinfo = localtime(&rawtime);
char buffer [80];
strftime(buffer, sizeof (buffer), "%d.%m.%Y %H:%I", timeinfo);
return std::string (buffer);
}
int main ()
{
std::string s = getFormat ();
std::cout << s << "\n";
}
输出:
03.10.2018 20:08
答案 1 :(得分:0)
您可能不想使用strftime
,而不是使用std::put_time
。它采用相同的格式字符串,因此写出当前时间将类似于:
time_t rawtime = std::time(nullptr);
tm *timeinfo = std::localtime(&rawtime);
std::cout << std::put_time(timeinfo, "%d.%m.%Y %H:%I") << "\n";
它是C ++ 11中添加的,因此已经有相当长的一段时间了。