C - конвертировать time_t в строку в формате ГГГГ-ММ-ДД ЧЧ: ММ: СС - PullRequest
39 голосов
/ 16 июня 2010

Есть ли способ автоматически преобразовать time_t в std::string в формате ГГГГ-ММ-ДД ЧЧ: ММ: СС при сохранении переносимости кода?

Ответы [ 2 ]

65 голосов
/ 16 июня 2010

Используйте localtime для преобразования time_t в struct tm. Вы можете использовать strftime для печати требуемых данных из этого.

char buff[20];
time_t now = time(NULL);
strftime(buff, 20, "%Y-%m-%d %H:%M:%S", localtime(&now));
0 голосов
/ 16 июня 2010

Ваша единственная реальная возможность вне моей головы - либо написать собственную подпрограмму, либо использовать функцию ctime (), определенную в POSIX.1 / C90.ctime (), безусловно, стоит изучить, но если ваша дата уже не в нужном часовом поясе, вы столкнетесь с проблемами.

РЕДАКТИРОВАТЬ: я не думал об использовании местного времени, как упоминал Джерри ниже.Преобразование его в структуру tm дает вам больше возможностей, включая то, что он упоминает, и strptime ().

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