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

C - преобразовать time_t в строку с форматом ГГГГ-ММ-ДД ЧЧ: ММ: СС

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

4b9b3361

Ответ 1

Используйте 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));

Ответ 2

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

EDIT: Я не думал об использовании localtime, как упоминал Джерри ниже. Преобразование его в struct tm дает вам больше возможностей, включая упоминания, и strptime().