Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
 Аватар для weirdie
0 / 0 / 0
Регистрация: 20.05.2015
Сообщений: 12

Расписание поездов: Какой формат следует использовать для даты и времени

20.05.2015, 22:31. Показов 1892. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Передо мной стоит такая задача. Заполнить массив структур. Заполнение из файла. Затем заливается в ListView.
Структура такая: Расписание поездов. Дано:
Точка_отправления, дата_отправления, время_отправления, точка_прибытия, дата_прибытия, время прибытия, тип_поезда.

Вопрос вот в чем, какой формат следует использовать для даты и времени?
Это лучше закинуть в одну переменную или отдельно?
Мне потребуется рассчитывать среднее время в пути.
Изучение си только начинаю, поэтому всё очень туго.
Попытки загуглить малоуспешны. Нахожу функции, которые переводят время в строку, а как наоборот, чтобы потом можно было с ним работать, не соображу.

Если у кого-то есть время и желание помочь, буду премного благодарна.
Или может, кто посоветует литературу, где можно об этом почитать и разобраться.
Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.05.2015, 22:31
Ответы с готовыми решениями:

Подскажите формат даты/времени
Здравствуйте! Подскажите пожалуйста формат даты/времени 29.03.2016 13:32:49 - "f036ad939589d101" 29.03.2016 22:26:35 -...

Какой тип данных лучше использовать для хранения времени в БД?
В БД созданной в Access есть поле которое хранит время, имеет тип "Дата и время", короткий формат и маска 00:00. При отображении БД в...

Какой из операторов следует использовать в процедуре Visual Basic для выполнения макрокоманды?
Какой из операторов следует использовать в процедуре Visual Basic для выполнения макрокоманды?

15
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
21.05.2015, 00:23
Цитата Сообщение от weirdie Посмотреть сообщение
Затем заливается в ListView
Это в какой такой ListView?
Который WinAPI или еще какой?
0
 Аватар для weirdie
0 / 0 / 0
Регистрация: 20.05.2015
Сообщений: 12
21.05.2015, 01:35  [ТС]
Компонент ListView/
Работаю в С++ Builder 6
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
21.05.2015, 04:42
<time.h>

Цитата Сообщение от weirdie Посмотреть сообщение
Работаю в С++ Builder 6
Лучше чего-нибудь поновее взять.
Жизнь не резиновая - чтоб тратить её на устаревшие технологии.
1
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
21.05.2015, 08:15
IrineK, Я с Вами полностью согласен, но почему то все высшие учебные заведения, экономят на закупке нового ПО, и всем студентам чаще всего предлагается использовать какой нибудь С++ Builder 6.
Хотя во времена своего студентчества, я для выполнения заданий использовал RADStudio 2010 и никто не был против, наоборот даже приветствовалось )
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
21.05.2015, 11:05
Цитата Сообщение от demon_7 Посмотреть сообщение
и никто не был против
Наверное, и в этом случае не будут.
Просто нужна инициатива самого студента.
Ну, и ноут неплохой тоже нужен.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
21.05.2015, 14:58
weirdie, наиболее на мой взгляд простым методом будет использовать Decode. Вот пример__
C++
1
2
3
4
5
6
7
8
9
10
{
    USHORT yy,mm,dd,  hh,nn,ss,uu ; // хранилище год,месяц,день,час...миллисекунды
    TDateTime DT = Now();           // получение "текущего момента"
    DecodeDate(DT,yy,mm,dd);
    DecodeTime(DT,hh,nn,ss,uu);
 
    Memo1->Lines->Add("год- "+IntToStr(yy));
    Memo1->Lines->Add("месяц- "+IntToStr(mm));                         /*
    . . .                                            и т.д.            */
}
В переменные unsigned short (или USHORT) помещаются перекодированные из DT значения дня и времени (время содержит часы, минуты, секунды и миллисекунды, - поэтому четыре переменных). Так же можно перевести и обратным методом, имея эти значения (из полей эдит, например)
C++
1
2
    TDateTime ET = EncodeDate(yy,mm,dd);
              ET = EncodeTime(hh,nn,ss,uu);
0
 Аватар для weirdie
0 / 0 / 0
Регистрация: 20.05.2015
Сообщений: 12
21.05.2015, 15:24  [ТС]
Просто все началось с лабораторных работ, описание к которым подстроено под Builder.
Поэтому проще и было работать именно с ним. И т.к. опыта в другом нет, курсовую приходится делать тоже в нем. Хотя слышала уже не раз, что он не особо хорош собой, но теперь куда деваться. Еще времени осталось очень мало разбираться с чем-то еще.

Можно уточнить.
То есть, когда объявляю переменную для времени, это элемент структуры у меня, пишу
clock_t v;
А когда считываю, нужно использовать формат %Н:%М
Что-то я делаю не так, и он меня не понимает.
Заполняется все наперекосяк.

Добавлено через 22 минуты
ах нет,
time_t v;
однако все равно не понимаю.
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
21.05.2015, 15:32
Цитата Сообщение от weirdie Посмотреть сообщение
Хотя слышала уже не раз, что он не особо хорош собой
Отличная штука. Только IDE не мешает выбрать поновей.
Например
Цитата Сообщение от demon_7 Посмотреть сообщение
для выполнения заданий использовал RADStudio 2010
У меня C++Builder XE7 (2014)

Embarcadero RAD Studio
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
21.05.2015, 15:36
Цитата Сообщение от IrineK Посмотреть сообщение
У меня C++Builder XE7 (2014)
Ну, и зачем
Цитата Сообщение от IrineK Посмотреть сообщение
тратить её на устаревшие технологии
? Уже XE8 - передовой, XE7 - отстой галимый, трата времени - налицо. Через пару-тройку месяцев выйдет XE9, и всё, опять надо покупать новое, чтобы быть "на гребне". Вот поэтому и не берется никогда последняя версия. Слишком быстро она становится неактуальной. Лично меня и XE2/XE4 устраивают (а до этого очень долго была в наличии D6, даже не седьмая)
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
21.05.2015, 15:40
Цитата Сообщение от volvo Посмотреть сообщение
Вот поэтому и не берется никогда последняя версия
Так для меня ХЕ7 - первая. Зачем же мне начинать с ХЕ4? Они мимо прошли - и ладно.
0
 Аватар для weirdie
0 / 0 / 0
Регистрация: 20.05.2015
Сообщений: 12
21.05.2015, 16:57  [ТС]
Так и не разобралась с этим временем
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
22.05.2015, 00:14
Структура для хранения инфы о времени
Показывает, что для каждой переменной - свой int
У вас
Дата: число/месяц/год - три инта
Время: часы/минуты - два инта

Можете сделать свою структуру, можете сразу пользоваться структурой tm
0
 Аватар для weirdie
0 / 0 / 0
Регистрация: 20.05.2015
Сообщений: 12
24.05.2015, 13:01  [ТС]
Извините, но я еще раз уточню..
значит в моем случае, можно так ..
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
25
26
27
28
29
30
31
32
33
34
35
36
typedef struct
{ int day;
   int mon;
   int year;
   int h;
   int m;
} tm1;   // объявить структуру для даты/времени. свою, чтобы не было секунд/недель и прочего
 
typedef struct   
 { char t_o[10];
   tm1 dt1; // дата и время отправления, то есть элементом структуры будет являться структура, правильно?
   char t_p[10];
   tm1 dt2; // дата и время прибытия
   char tip[12];
 } B;
 
unsigned size=2; 
 B *data = (B*)malloc(size*sizeof(B)); // это мой динамический массив будет, элементы которого структуры B
 int i=0; //счетчик
 
void __fastcall TForm1::downl_btClick(TObject *Sender)
{
while(!feof(inp)) // пока не конец файла, считываю
   {  fscanf(inp, "%s %??  %s %?? %s",  &data[i].t_o, &data[i].dt1, &data[i].t_p, &data[i].dt2, &data[i].tip);
         // что нужно поставить на место знаков вопроса? 
      TListItem *Item = ListView1->Items->Add();
      Item->Caption =data[i].t_o;
      Item->SubItems->Add(???); // и как вывести это в ячейку listview в нормальном виде?
      Item->SubItems->Add(data[i].t_p);
      Item->SubItems->Add(???);
      Item->SubItems->Add(data[i].tip);
      i++;
      size++;
      data =  (B*)realloc(data, size*sizeof(B));
    }
}
а как должна выглядеть строка в текстовом файле, не так?
Санкт-Петербург 22 11 15 22 45 Москва 22 11 15 23 45 скоростной
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
24.05.2015, 17:52
Цитата Сообщение от weirdie Посмотреть сообщение
и как вывести это в ячейку listview в нормальном виде?
Напишите функцию, которая собирает ваши инты в красивую строку
12/05/2015 11:30
1
 Аватар для weirdie
0 / 0 / 0
Регистрация: 20.05.2015
Сообщений: 12
24.05.2015, 18:28  [ТС]
я поняла, что очень много ерунды написала.
считывала совсем неправильно.. просто не осознала, что у меня получилась вложенная структура, то есть обращение неверное к ее элементам указывала)
теперь успех!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.05.2015, 18:28
Помогаю со студенческими работами здесь

Какой формат использовать для Кодов ТНВЭД
История такая Есть Коды ТНВЭД Формата 00000000 (10 цифр) Т.е. есть 004320000, А есть 4320 в которые входит 432010000 и 4320200000 ...

Элемент Расписание для построения графика движения поездов
Нужно создать расписание поездов. Делаю через элемент &quot;Расписание&quot;, но после заданного момента времени sourse начинает создать по несколько...

Какой формат нужно использовать для вывода первого нуля
Добрый день! Есть переменная startnumber, у которой тип на данный момент ulong. В данную переменную поступает из textbox число вида...

Какой тип использовать для даты в dataGridView?
добрый день есть класс который я использую для dataGridView public class PersonnelDepartment { public int gs_n { get; set;...

Какой класс использовать для представления времени
Мне нужно расписание сделать. Можно ,конечно, через дабл 13.30 , но как-то не по госту, наверное. Стринг ругается , если я вписываю 13:30,...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru