как преобразовать time_t во что-то вроде «Пт, 12 ноября 2010 16:02:54 GMT» в C на Linux - PullRequest
2 голосов
/ 12 ноября 2010

Я пишу простой веб-сервер на C для Linux.

Мне нужно добавить время последнего изменения файла, который будет передан клиенту (браузеру),

Я проанализировал, как некоторые веб-сайты и выяснили, что все они представляют время в формате:

Fri, 12 Nov 2010 16:02:54 GMT,

Мой вопрос заключается в том, могу ли я передать значение time_t в какую-либо строку в прежнем форматепросто?Есть ли функция для этого?Или формат вообще не важен?

Ответы [ 2 ]

5 голосов
/ 12 ноября 2010

strftime () - необходимая вам функция.

Хорошим примером является статья в Википедии о time_t. http://en.wikipedia.org/wiki/Time_t

2 голосов
/ 12 ноября 2010

Это похоже на формат, определенный в RFC 822 , вы можете преобразовать time_t в struct tm и отформатировать его, используя strftime строку типа

struct tm time_tm;
char http_time[64];
time_t  t = time(NULL);
gmtime_r(&t,&time_tm);
strftime(http_time,sizeof http_time,"%a, %d %b %Y %H:%M:%S +0000",&time_tm);

ПРИМЕЧАНИЕ;strftime преобразует имена, используя текущую локаль, вам может потребоваться изменить текущую локаль для получения английских имен.

Спецификация HTTP также допускает формат, заданный asctime ()

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