Получение текущего времени в виде строки ГГГГ-ММ-ДД-ЧЧ-ММ-СС - PullRequest
18 голосов
/ 26 марта 2011

Я пытаюсь изобразить текущее время в виде строки в формате «ГГГГ-ММ-ДД-ЧЧ-ММ-СС». Я могу взять текущее время в формате ISO из библиотеки Boost «Date Time», но у нее есть другие строки-разделители, которые мне не подойдут (я использую это в имени файла). Конечно, я могу просто заменить строки-разделители, но у меня есть ощущение, что есть лучший способ сделать это с опциями форматирования даты и времени. Есть ли такой способ, и если да, то как я могу его использовать?

Ответы [ 2 ]

33 голосов
/ 26 марта 2011

Используйте std::strftime, это стандарт C ++.

#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 голосов
/ 26 марта 2011

Ответ зависит от того, что вы подразумеваете под «взять и взять». Если вы пытаетесь вывести отформатированную строку времени, используйте strftime (). Если вы пытаетесь проанализировать текстовую строку в двоичном формате, используйте strptime ().

...