Как изменить формат местного времени по умолчанию в C ++? - PullRequest
5 голосов
/ 18 марта 2011

У меня есть функция:

string get_current_time()
{
    time_t rawtime;
    struct tm * timeinfo;

    time ( &rawtime );
    timeinfo = localtime ( &rawtime );

    return asctime (timeinfo);
}

, которая возвращает время в следующем формате:

Fri Mar 18 11:25:04 2011

Как мне изменить его, чтобы оно возвращалось в следующем формате?

2011 03-18 11-25-04 Fri

Я хочу использовать это для имен файлов журнала.

Ответы [ 2 ]

6 голосов
/ 18 марта 2011

Как предложено @ 0A0D , хотя вы не можете изменить asctime, вы можете использовать strftime для форматирования данных, содержащихся в вашем time_t:

string get_current_time()
{
    time_t rawtime;
    struct tm * timeinfo;

    time ( &rawtime );
    timeinfo = localtime ( &rawtime );

    char output[30];
    strftime(output, 30, "%Y %m-%d %H-%M-%S %a", timeinfo);

    return string(output);
}

(я также поместил копию на IdeOne здесь .)

3 голосов
/ 18 марта 2011

asctime() всегда возвращается в формате Www Ммм дд чч: мм: сс гггг. Его нельзя изменить.

Если вы хотите использовать другой формат, посмотрите на strftime () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...