Я пытаюсь получить текущее время как форматированная строка "YYYY-MM-DD-HH-MM-SS" элегантным способом. Я могу взять текущее время в формате ISO из библиотеки Boost "Date Time", но у нее есть другие строки разграничения, которые не будут работать для меня (я использую это в имени файла). Конечно, я могу просто заменить разделительные строки, но у меня есть ощущение, что есть лучший способ сделать это с помощью параметров форматирования даты и времени. Есть ли такой способ, и если да, то как я могу его использовать?
Получение текущего времени в виде строки YYYY-MM-DD-HH-MM-SS
Ответ 1
Используйте std::strftime
, это стандартный С++.
#include <cstdio>
#include <ctime>
int main ()
{
std::time_t rawtime;
std::tm* timeinfo;
char buffer [80];
std::time(&rawtime);
timeinfo = std::localtime(&rawtime);
std::strftime(buffer,80,"%Y-%m-%d-%H-%M-%S",timeinfo);
std::puts(buffer);
return 0;
}
Ответ 2
Ответ зависит от того, что вы подразумеваете под этим вопросом. Если вы пытаетесь вывести форматированную строку времени, используйте strftime(). Если вы пытаетесь проанализировать текстовую строку в двоичном формате, используйте strptime().