我写了一个函数来获取格式的当前日期和时间:DD-MM-YYYY HH:MM:SS.它可以工作,但让我们说,它非常难看.我怎么能做同样的事情,但更简单?
string currentDateToString()
{
time_t now = time(0);
tm *ltm = localtime(&now);
string dateString = "", tmp = "";
tmp = numToString(ltm->tm_mday);
if (tmp.length() == 1)
tmp.insert(0, "0");
dateString += tmp;
dateString += "-";
tmp = numToString(1 + ltm->tm_mon);
if (tmp.length() == 1)
tmp.insert(0, "0");
dateString += tmp;
dateString += "-";
tmp = numToString(1900 + ltm->tm_year);
dateString += tmp;
dateString += " ";
tmp = numToString(ltm->tm_hour);
if (tmp.length() == 1)
tmp.insert(0, "0");
dateString += tmp; …Run Code Online (Sandbox Code Playgroud) 在C++ 11中,你仍然需要使用std::localtime和std::gmtime作为间接来打印std::chrono::time_point.这些函数在C++ 11引入的多线程环境中使用是不安全的,因为它们返回一个指向内部静态结构的指针.这尤其令人讨厌,因为C++ 11引入了方便的功能std::put_time,由于同样的原因几乎无法使用.
为什么这么根本被打破或者我忽略了什么?
我想获取登录c的时间戳.我写了一个函数来获取时间戳.但是当我返回变量时,我得到了不同的价值.
我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
char* get_timestamp(){
time_t rawtime;
struct tm * timeinfo;
char buffer[16];
time (&rawtime);
timeinfo = localtime (&rawtime);
strftime (buffer,16,"%G%m%d%H%M%S",timeinfo);
puts(buffer);
return buffer;
}
int main()
{
puts(get_timestamp());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
20130315204815
Ir?0315204815
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮忙...谢谢.