Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.65
"Ламер"-программер:)
5 / 5 / 0
Регистрация: 17.04.2009
Сообщений: 69
#1

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

08.12.2009, 13:52. Просмотров 7008. Ответов 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 минуту
В общем нужно что бы прога выводила только день, месяц и год.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2009, 13:52     Структура tm. Вывод даты.
Посмотрите здесь:

Даты ввод вывод разность C++
C++ Вывод даты, времени в лог
Вывод даты по году и номеру дня C++
Вывод даты С++. C++
DDX вывод даты в трех полях C++
C++ Вывод на экране текущей даты
Структура, последующий вывод. C++
C++ Вывод даты в русской локализации (Linux)
Структура для даты C++
C++ Потокобезопасный вывод даты
Структура, описывающая понятие даты C++
C++ Структура. Ввод и вывод

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
"Ламер"-программер:)
5 / 5 / 0
Регистрация: 17.04.2009
Сообщений: 69
08.12.2009, 19:43  [ТС]     Структура tm. Вывод даты. #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 ) );
Gravity
558 / 552 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
08.12.2009, 19:50     Структура tm. Вывод даты. #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;
}
"Ламер"-программер:)
5 / 5 / 0
Регистрация: 17.04.2009
Сообщений: 69
08.12.2009, 20:44  [ТС]     Структура tm. Вывод даты. #4
Большое спасибо,Gravity. Но результаты всё равно какието странные. Когда вводишь 12 - показывает ноль дней, и месяц как-то "отстаёт" на 1. Либо функция localtime неправильно из системы дату берёт либо что-то ещё.
Gravity
558 / 552 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
08.12.2009, 21:03     Структура tm. Вывод даты. #5
Мм, забыл - к when->tm_mon нужно плюсовать 1, т.к. отсчет месяцев идет с нуля. Еще вместо tm_wday должно быть tm_mday.
Yandex
Объявления
08.12.2009, 21:03     Структура tm. Вывод даты.
Ответ Создать тему
Опции темы

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