LINUX.ORG.RU

time->string


0

0

Меня сейчас, конечно, запинают, но все же :) Можно ли напрямую (без перевода в струтуру) перевести время из секунд (1161911506) в строку вида 01.03.1996?

Т.е. у меня имеется стандартное время полученное функцией time (или получаемое в виде строки из файла). Функции strftime, asctime требуют в качестве входных параметров структуры типа tm, а не число типа time_t.

anonymous

Если хоть немного подумать, то станет ясно, что для того, чтобы вывести дату в виде 01.03.1996, нужны значения дня, месяца и года в числовом виде, т.е. то, что содержится в tm. Значит, вычисления, которые делают gmtime, localtime придется делать в любом случае. В стандартной библиотеке не имеет смысла делать функцию, сводящуюся к двум вызовам других стандартных функций.

Если у тебя часто встречается преобразование time_t->string, напиши свою функцию в 3 строки и не парься. Это займет меньше времени, чем написание поста в форум :)

watashiwa_daredeska ★★★★
()
Ответ на: комментарий от watashiwa_daredeska

>Значит, вычисления, которые делают gmtime, localtime придется делать в любом случае.

У меня значения времени хранятся в файле. Имеют вид: 1161911506, 1161911560... Мне _нет_ необходимости использовать функции gmtime/localtime. Т.е. у меня _уже_ есть значения времени возвращаемое функцией time(NULL), к примеру. И у меня _нет_ структуры tm. Все что я могу сделать - это использовать функцию ctime(1161911506). Но у нее формат вывода другой. Может быть тогда можно как-то перевести значение 1161911506 в поля структуры типа tm?

anonymous
()
Ответ на: комментарий от anonymous

> Мне _нет_ необходимости использовать функции gmtime/localtime.

Как это? А кто тебе тогда будет конвертировать из time_t в struct tm?

man localtime, man strftime до просветления.

А вообще, так (для лентяев):

char * unixtime2string(char * buf, size_t bufsize, time_t ut) { struct tm ltm; strftime(buf, bufsize-1, "%d.%m.%Y", localtime_r(&ut, &ltm)); return buf; }

anonymous
()
Ответ на: комментарий от anonymous

Да уж. Затупил я не пАдецки, как говорится. НГ даром не прошел. Спасибо за подсказку.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.