Есть ли способ конвертировать time_t
в std::string
с форматом ГГГГ-ММ-ДД ЧЧ: ММ: СС автоматически, сохраняя переносимый код?
C - преобразовать time_t в строку с форматом ГГГГ-ММ-ДД ЧЧ: ММ: СС
Ответ 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().