Подтвердить что ты не робот

Получение текущего времени в виде строки YYYY-MM-DD-HH-MM-SS

Я пытаюсь получить текущее время как форматированная строка "YYYY-MM-DD-HH-MM-SS" элегантным способом. Я могу взять текущее время в формате ISO из библиотеки Boost "Date Time", но у нее есть другие строки разграничения, которые не будут работать для меня (я использую это в имени файла). Конечно, я могу просто заменить разделительные строки, но у меня есть ощущение, что есть лучший способ сделать это с помощью параметров форматирования даты и времени. Есть ли такой способ, и если да, то как я могу его использовать?

4b9b3361

Ответ 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().