将字符串设置为当前日期
Set string as current date
我需要写入名称中包含当前日期的文件。
目前这是我尝试过的:
time_t t = time(0);
struct tm * now = localtime(&t);
string date=now->tm_mday+'/'+(now->tm_mon+1)+'/'+(now->tm_year+1900);
我最好保留这种获取日期的方法,因为我之前在我的程序中使用过它。
我会使用 std::put_time
,像这样:
time_t t = time(0);
struct tm * now = localtime(&t);
your_file << std::put_time(now, "%d/%m/%Y");
如果您的意思是您需要在新文件的名称中包含日期,则写入字符串流,并使用 your_stream.str()
获取包含该值的字符串。
如果(尽管我觉得不太可能)您发现这会带来过多的开销,您可以改用 strftime
。它将 date/time 直接写入 C 风格的字符串:
char buffer[64];
strftime(buffer, sizeof(buffer), "%d/%m/%Y", now);
我经常使用std::strftime有点像这样:
// use strftime to format time_t into a "date time"
std::string get_date(std::time_t timer)
{
char buf[sizeof("02/05/2015")]; // big enough for 02/05/2015[=10=]
std::tm tp = *std::localtime(&timer); // not thread safe
return {buf, std::strftime(buf, sizeof(buf), "%d/%m/%Y", &tp)};
}
int main()
{
std::cout << get_date(std::time(0)) << '\n';
}
输出:
02/05/2016
我需要写入名称中包含当前日期的文件。 目前这是我尝试过的:
time_t t = time(0);
struct tm * now = localtime(&t);
string date=now->tm_mday+'/'+(now->tm_mon+1)+'/'+(now->tm_year+1900);
我最好保留这种获取日期的方法,因为我之前在我的程序中使用过它。
我会使用 std::put_time
,像这样:
time_t t = time(0);
struct tm * now = localtime(&t);
your_file << std::put_time(now, "%d/%m/%Y");
如果您的意思是您需要在新文件的名称中包含日期,则写入字符串流,并使用 your_stream.str()
获取包含该值的字符串。
如果(尽管我觉得不太可能)您发现这会带来过多的开销,您可以改用 strftime
。它将 date/time 直接写入 C 风格的字符串:
char buffer[64];
strftime(buffer, sizeof(buffer), "%d/%m/%Y", now);
我经常使用std::strftime有点像这样:
// use strftime to format time_t into a "date time"
std::string get_date(std::time_t timer)
{
char buf[sizeof("02/05/2015")]; // big enough for 02/05/2015[=10=]
std::tm tp = *std::localtime(&timer); // not thread safe
return {buf, std::strftime(buf, sizeof(buf), "%d/%m/%Y", &tp)};
}
int main()
{
std::cout << get_date(std::time(0)) << '\n';
}
输出:
02/05/2016