Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.65
"Ламер"-программер:)
5 / 5 / 2
Регистрация: 17.04.2009
Сообщений: 69
#1

Структура tm. Вывод даты. - C++

08.12.2009, 13:52. Просмотров 8188. Ответов 4
Метки нет (Все метки)

Доброго времени суток, ув. форумчане.
Возникла проблема с выводом месяца и года. Почему-то вместо месяца выводит каракули, а вместо года вообще число не понятное. Код ниже.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <time.h>
#include <stdio.h>
#include <iostream>
 
void main( void )
{
   struct tm when;
   time_t now, result;
   int    days;
 
   time( &now );
   when = *localtime( &now );
   printf( "Current time is %s\n", asctime( &when ) );
   printf( "How many days to look ahead: " );
   scanf( "%d", &days );
 
   when.tm_mday = when.tm_mday + days;
   if( (result = mktime( &when )) != (time_t)-1 )
      printf( "In %i days the time will be %i %c %i\n",
              days, when.tm_wday, when.tm_mon, when.tm_year);
   else
      perror( "mktime failed" );
}
Добавлено через 4 минуты
Кстати если попросить прогу вывести asctime( &when ), а не день месяц и год по отдельности, то всё работает.

Добавлено через 31 минуту
В общем нужно что бы прога выводила только день, месяц и год.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2009, 13:52
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Структура tm. Вывод даты. (C++):

Структура для даты
Здравствуйте, у меня возникла проблема, заключается она в дате. Подробнее: в...

Структура для хранения даты
Записать название месяца и день. Почему компилятор жалуется? #include...

Структура, описывающая понятие даты
Задание Ввести структуру (с полями число, месяц, год) для описания понятия...

Перевод даты типа структура в число для сравнения с другими датами
перевод даты типа структура в число для сравнения с другими датами с++

Структура. Ввод и вывод
Выдает ошибку cin &gt;&gt;count; и cout &lt;&lt;count&lt;&lt;&quot;&quot;;, я понимаю в чём ошибка, но как...

Структура, последующий вывод.
Помогите вывести на экран информацию о поездах, отпарвляющиеся после того...

4
"Ламер"-программер:)
5 / 5 / 2
Регистрация: 17.04.2009
Сообщений: 69
08.12.2009, 19:43  [ТС] #2
исходный код отличен от приведённого выше лишь на вот эту строку ниже, и имеет примерно такой формат: In 29 days the time will be Wed Jun 01 12:45:47 1994

C++
1
2
      printf( "In %d days the time will be %s\n",
              days, asctime( &when ) );
0
Gravity
569 / 563 / 64
Регистрация: 29.01.2009
Сообщений: 1,274
08.12.2009, 19:50 #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <time.h>
#include <stdio.h>
 
int main( void )
{
   struct tm *when;
   time_t now, result;
   int    days;
 
   time( &now );
   when = localtime( &now );
   printf( "Current time is %s\n", asctime( when ) );
   printf( "How many days to look ahead: " );
   scanf( "%d", &days );
 
   when->tm_mday = when->tm_mday + days;
   if( (result = mktime( when )) != (time_t)-1 )
      printf( "In %i days the time will be %i %i %i\n",
              days, when->tm_wday, when->tm_mon, when->tm_year + 1900);
   else
      perror( "mktime failed" );
 
   return 0;
}
1
"Ламер"-программер:)
5 / 5 / 2
Регистрация: 17.04.2009
Сообщений: 69
08.12.2009, 20:44  [ТС] #4
Большое спасибо,Gravity. Но результаты всё равно какието странные. Когда вводишь 12 - показывает ноль дней, и месяц как-то "отстаёт" на 1. Либо функция localtime неправильно из системы дату берёт либо что-то ещё.
0
Gravity
569 / 563 / 64
Регистрация: 29.01.2009
Сообщений: 1,274
08.12.2009, 21:03 #5
Мм, забыл - к when->tm_mon нужно плюсовать 1, т.к. отсчет месяцев идет с нуля. Еще вместо tm_wday должно быть tm_mday.
1
08.12.2009, 21:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2009, 21:03
Привет! Вот еще темы с решениями:

Вывод даты С++.
В общем как на С++, вывести текущую дату? Вопрос наверно глупый, тем более...

Структура Train, вывод информации о поездах
Описать структуру с именем TRAIN, содержащую следующие поля: название пункта...

Структура: Вывод результата в табличном виде
Как сделать так, чтобы и результат выводил в виде таблицы? Помогите, пожалуйста...

Потокобезопасный вывод даты
Как потокобезопасно вывести текущую дату? Как я понимаю, ctime возвращает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru