Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
1

Правильно перевести Int в DateTime

30.06.2014, 17:29. Показов 7056. Ответов 29
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер ув. Программисты.

Есть 3и переменные: d,h,m

в них значение

Delphi
1
2
3
D:=2;
H:30;
M:86;
Как перевести все эти данные так чтоб получилось примерно следующее:
Delphi
1
2
3
D:=3; //Дня
H:=23; //Часа
M:=59; //Минут
Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2014, 17:29
Ответы с готовыми решениями:

Как правильно перевести int и string в *char для записи в SQLlite?
Доброго времени суток! Вопрос такой: Каким образом обычно переводятся значения типа int и string...

DateTime To int
public static void ConvertDatetoInt(DateTime inputDate) { ...

Int to DateTime
Всем привет! Есть сервис который возвращает данные котировок в json...

Из int в datetime
Я в хранимаю процедуру передаю @Year int и @Month внутри хочу переменной типа datetime присвоить...

29
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
30.06.2014, 17:37 2
Цитата Сообщение от cezer_ak Посмотреть сообщение
Как перевести все эти данные так чтоб получилось примерно следующее
Правильно? Никак. Между начальными и конечными значениями d,h,m нет никакой логической связи.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.06.2014, 17:41 3
Delphi
1
2
3
d:=d+1;
h:=h-7;
m:=m-27;
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
30.06.2014, 17:45  [ТС] 4
А если перевести все в секунды как я могу правильно все это сделать?

Добавлено через 1 минуту
Puporev, если было бы так легко я бы не спрашивал но все равно спасибо.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.06.2014, 17:52 5
Цитата Сообщение от cezer_ak Посмотреть сообщение
А если перевести все в секунды
Delphi
1
s:=60*m+60*60*h+60*60*24*d;
1
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
30.06.2014, 17:53 6
Цитата Сообщение от cezer_ak Посмотреть сообщение
А если перевести все в секунды как я могу правильно все это сделать?
А что по твоему означает правильно?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.06.2014, 17:59 7
Цитата Сообщение от cezer_ak Посмотреть сообщение
если было бы так легко я бы не спрашивал
Какой вопрос, такой и ответ

Добавлено через 6 минут
После обсуждения этой проблемы на одном из форумов в коне автор темы написал
Возможно, откажусь от (дурацкой) затеи.
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
30.06.2014, 18:14  [ТС] 8
Цитата Сообщение от Puporev Посмотреть сообщение
Какой вопрос, такой и ответ

Добавлено через 6 минут
После обсуждения этой проблемы на одном из форумов в коне автор темы написал
Мне понравилось ваше чувство юмора)))

Добавлено через 1 минуту
Цитата Сообщение от northener Посмотреть сообщение
А что по твоему означает правильно?
Правильно означает когда Минуты не превышают 59 Часы не превышают 23 а дни не превышают 30 или 31 ну или в случае февраля 28

Добавлено через 50 секунд
Цитата Сообщение от Puporev Посмотреть сообщение
Delphi
1
s:=60*m+60*60*h+60*60*24*d;
Так это есть после того как я получу секунды как мне их преврати в дни часы и минуты? Все тоже самое только делить?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.06.2014, 18:17 9
Цитата Сообщение от cezer_ak Посмотреть сообщение
как мне их преврати в дни часы и минуты?
Так у тебя и так были дни часы и минуты

Добавлено через 23 секунды
Ты напиши по русски что тебе нужно...
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
30.06.2014, 18:24  [ТС] 10
Puporev, Да они были но не в правильном формате(((( ну т.е. в минутах не может быть 86 в часах не может быть 30 и так далее при условии того что цифры меняются

Добавлено через 6 минут
Цитата Сообщение от Puporev Посмотреть сообщение
Так у тебя и так были дни часы и минуты

Добавлено через 23 секунды
Ты напиши по русски что тебе нужно...
у меня есть дни часы и минуты точнее их не правильное подобие: 2 дня 30 часов 86 минут. цифры соответственно могут меняться минуты часы и дни могут быть больше могут быть меньше.
Нужно: Перевести их в правильную форму. По законам времени Часы не могут быть больше 23 минуты больше 59.
Надеюсь ещё больше не запутал)))
0
Пишу на Delphi...иногда
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
30.06.2014, 18:31 11
cezer_ak, как получаются значения? есть подозрение, что это BCD формат, но приведенные цифры для него не совсем корректны
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.06.2014, 18:39 12
Ну и переведи все в минуты. А потом посчитай.
Delphi
1
2
3
4
mn:=m+h*60+d*60*24;//перевод в минуты
m:=mn mod 60;//новое число минут
h:=m div 60 mod 24;
d:=m div (60*24);
вроде правильно, проверь.

Добавлено через 1 минуту
И при чем здесь DateTime???
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
30.06.2014, 18:46  [ТС] 13
Цитата Сообщение от Puporev Посмотреть сообщение
Ну и переведи все в минуты. А потом посчитай.
Delphi
1
2
3
4
mn:=m+h*60+d*60*24;//перевод в минуты
m:=mn mod 60;//новое число минут
h:=m div 60 mod 24;
d:=m div (60*24);
вроде правильно, проверь.

Добавлено через 1 минуту
И при чем здесь DateTime???
Не то(( Result равен: 0 дней а должно быть 3, 0 часов и 25 минут (((
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.06.2014, 18:50 14
Здесь не допечатал я
Delphi
1
2
h:=mn div 60 mod 24;
d:=mn div (60*24);
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
30.06.2014, 18:55  [ТС] 15
Цитата Сообщение от cotseec Посмотреть сообщение
cezer_ak, как получаются значения? есть подозрение, что это BCD формат, но приведенные цифры для него не совсем корректны
Значения это сумма столбца в котором много строк с следующими значениями:
Первые две цифры это дни вторые две часы третьи две минуты, но они в виде string
Delphi
1
2
3
4
5
6
7
8
9
10
01 03:55
00 15:00
00 00:30
00 00:00
00 00:00
00 00:00
00 00:00
00 00:00
00 10:01
01 02:00
подъитоженная сумма: 2 Дня; 30 часов; 86 минут; Но значения могут меняться и в большую и в меньшую сторону.

Добавлено через 3 минуты
Цитата Сообщение от Puporev Посмотреть сообщение
Здесь не допечатал я
Delphi
1
2
h:=mn div 60 mod 24;
d:=mn div (60*24);
Похоже на правду) На сколько я могу быть уверен в этой функции? Ошибки в расчетах вероятны?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.06.2014, 18:59 16
Так я и просил проверить, это же тебе нужно. Я проверил в Паскале, вроде верно, но если ввести твои данные
D:=2;
H:30;
M:86;
то не получится
D:=3; //Дня
H:=23; //Часа
M:=59; //Минут
С потолка что ли взял?
Вот код проверки
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var m,h,d,mn:integer;
begin
d:=2;
h:=30;
m:=86;
mn:=m+h*60+d*60*24;//перевод в минуты
writeln('mn=',mn);
m:=mn mod 60;//новое число минут
h:=mn div 60 mod 24;//новое число часов
d:=mn div (60*24); //новое число дней
writeln(d,' ',h,' ',m);
mn:=m+h*60+d*60*24;//проверка
writeln('mn=',mn);
end.
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
30.06.2014, 19:23  [ТС] 17
Вооооо гуд, спасибо работает. Благодарю.
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
30.06.2014, 19:34 18
Цитата Сообщение от cezer_ak Посмотреть сообщение
Как перевести все эти данные так чтоб получилось примерно следующее:
D:=3; //Дня
H:=23; //Часа
M:=59; //Минут
Если бы этого "примерно слудующего" в вопросе не было бы, ответ получил бы на 2 часа раньше.
0
Модератор
9871 / 5239 / 3306
Регистрация: 17.08.2012
Сообщений: 16,007
01.07.2014, 10:12 19
Корректировка без дополнительных переменных и перевода в минуты/секунды. Если секунды не требуются, уберите первые две строки.
Delphi
1
2
3
4
5
6
m := m + s div 60;
s := s mod 60;
h := h + m div 60;
m := m mod 60;
d := d + h div 24;
h := h mod 24;
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
01.07.2014, 10:17 20
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
без дополнительных переменных
Я так понимаю что s у Вас вычисляется, что осталось за кадром. Это и есть дополнительная переменная. А в остальном чем это лучше моего
Delphi
1
2
3
m:=mn mod 60;//новое число минут
h:=mn div 60 mod 24;//новое число часов
d:=mn div (60*24); //новое число дней
где mn=s
0
01.07.2014, 10:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2014, 10:17
Помогаю со студенческими работами здесь

Конвертация из int(10) в datetime
Ребят, помогите, если не затруднит. Тема такая: есть две таблицы в БД, в одной строка "дата...

Преобразование DateTime к int
Подскажите как преобразовать DateTime в int т.к. в таком кантесте кода ругается что не явно ...

Как перевести число int в массив int digits[]
String fileName1=123456; int n=fileName1.length(),i=0; int digits = new int; ...

Как перевести сишный unsigned int в явский int?
Кто-нибудь занимался подобным переводом кода? Поначалу я думал, что разницы вообще нет, просто ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru