2015-10-18 2 views
0

Я любопытно застрял здесь с функцией mktime, и я был бы признателен за любую помощь, которую я могу получить.C - Печать только выбранной информации из mktime?

Так что я делаю, имеющий вход пользователя в год, месяц и день, а затем запустить структуру тм, чтобы вычислить все так:

STRUCT время тм;

time_t t;

time.tm_year = year - 1900; 
time.tm_mon = month - 1; 
time.tm_mday = day; 
time.tm_hour = 0; 
time.tm_min = 0; 
time.tm_sec = 0; 
time.tm_isdst = -1; 

А потом я запустить функцию и указываете ей установить его равным т:

т = указываете ей (& времени);

А потом я запустить функцию печати, как это:

Printf ("% s", CTime (& т));

Однако то, что я получаю с помощью этого метода является то, это, например:

Сб авг 23 00:00:00 2013

Но то, что я хотел бы окончательный формат времени, чтобы посмотреть, как это:

пн 2013 02 11

Как бы я идти об этом? Я думаю, что мой подход с функцией ctime не совсем прав.

Возможно, мне следует использовать функцию strftime?

Обратите внимание, что мне не нужно печатать текущее время.

Спасибо, есть хороший:)

ответ

3

Вы можете использовать strftime для этого. Вот пример:

char str[50]; 
struct tm *tm_info = localtime(&t); 
strftime(str, 50, "%a %G %m %d", tm_info); 

Затем вы можете использовать printf("%s\n", str) для вывода отформатированных данных.

Благодаря Xis88 для формата.

+0

Запрошенная строка формата будет ''% a% Y% m% d "'. –

+0

Привет, спасибо за ваш ответ. Я думал, что это будет путь. но как бы реализовать его, если моя структура объявлена ​​как это struct tm time; вместо struct tm * time? – Daeto

+0

Ну, вы можете просто использовать ссылочный оператор, чтобы указать на структуру, которую вы имеете: 'strftime (str, 50,"% a% G% m% d ", &time);', но я не уверен, что вы пытаетесь Почему бы просто не объявить его как указатель и использовать localtime? – Linus

Смежные вопросы