:: Visual Foxpro, Foxpro for DOS
Торможу с интервалом
PaulWist
Автор

Сообщений: 14601
Дата регистрации: 01.04.2004
Братцы.

Торможу, нет красивого решения.

Дано:

Время "отсечки" в часах и минутах, а-ля 0.00, 00.30, 1.00, 1.30..... 23.00, 23.30

Найти:

Сколько осталось до времени "отсечки" в секундах, например time = 9.22 до 9.30 = 8 мин


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Торможу с интервалом
Sergey_K

Сообщений: 15
Дата регистрации: 07.05.2018
Добрый день.
Допустим отсечка в 12:00
12*60 - SECONDS()/60
Ratings: 0 negative/1 positive
Re: Торможу с интервалом
Владимир Максимов

Сообщений: 14095
Откуда: Москва
Дата регистрации: 02.09.2000
1. Перевести все значения в сопоставимые величины. В данном случае - в минуты
2. Текущее время также перевести в минуты
3. Найти ближайшее большее из списка к текущему значению и получить разницу

Как уже неоднократно и по разным поводам упоминалось, если речь идет о списке (любом), то этот список надо хранить в таблице. Тогда все сильно упрощается. У таблицы есть значение, которое видит пользователь (те самые 0.00, 0.30, ...) и значение, по которому будет выполняться анализ (0, 30, 60, ...). Остается только текущее значение перевести в нужное значение и выполнить поиск по списку

Собственно, можно сделать таблицу минут в сутках. 24*60 = 1440 записей. И для каждой записи добавить поле с нужным форматом вида 9.22. Судя по задаче, эта таблица будет очень востребована
Ratings: 0 negative/2 positive
Re: Торможу с интервалом
PaulWist
Автор

Сообщений: 14601
Дата регистрации: 01.04.2004
Владимир Максимов
Судя по задаче, эта таблица будет очень востребована

Спасибо, Володь.

Именно так сделал.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Торможу с интервалом
Артём

Сообщений: 116
Дата регистрации: 23.04.2001
Часто время хранится в виде количества секунд , прошедших с какого-то фиксированного момента.
поэтому их можно вычитать, делить и складывать
так. добавить неделю, обычно +7*24*60*60
поэтому по сабжу
DATETIME() - CTOT("2023-06-18T00:00:00")
Ratings: 0 negative/0 positive
Re: Торможу с интервалом
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Владимир Максимов
1. Перевести все значения в сопоставимые величины. В данном случае - в минуты
2. Текущее время также перевести в минуты
3. Найти ближайшее большее из списка к текущему значению и получить разницу

Как уже неоднократно и по разным поводам упоминалось, если речь идет о списке (любом), то этот список надо хранить в таблице. Тогда все сильно упрощается. У таблицы есть значение, которое видит пользователь (те самые 0.00, 0.30, ...) и значение, по которому будет выполняться анализ (0, 30, 60, ...). Остается только текущее значение перевести в нужное значение и выполнить поиск по списку

Собственно, можно сделать таблицу минут в сутках. 24*60 = 1440 записей. И для каждой записи добавить поле с нужным форматом вида 9.22. Судя по задаче, эта таблица будет очень востребована

Мтк, просто - датавремя = число. В фоксе можно вычитать время из время, получать кол. секунд. перевести разницу в секундах в дииапазон датавремя-датавремя - проблемно. Почему не два значения (от заданного, раз диапазон).... Поучаствовал )
Доб) Обычно задача в том чтобы "от начального времени, через столько минут, сработало"



Исправлено 1 раз(а). Последнее : of63, 27.07.23 20:24
Ratings: 0 negative/0 positive
Re: Торможу с интервалом
akvvohinc

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
Часто время хранится в виде количества секунд , прошедших с какого-то фиксированного момента.
поэтому их можно вычитать, делить и складывать.
DATETIME() - CTOT("2023-06-18T00:00:00")
В полях типа DATETIME() данные хранятся в формате, отличном "количества секунд, прошедших с какого-то фиксированного момента".
Но несмотря на это, их можно вычитать, как в примере, который вы привели.

Что же касается "делить и складывать", то никогда ранее не слышал о такой возможности, а мой Фокс на это не способен.
Ratings: 0 negative/0 positive
Re: Торможу с интервалом
akvvohinc

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
of63
просто - датавремя = число.
Непонятно, что ты имеешь в виду.
Вообще всё - есть последовательность битов, которую комп считает представлением некоторого двоичного числа.
Но если не знать системы кодирования, то простое знание числа ничем не поможет.
Без этого ты не сможешь просто взять число, лежащее в поле DateTime и соответствующее какой-то дате/времени, и производить с ним какие-то осмысленные манипуляции.

Вот число, соответствующее некоторому значению DateTime:
FA 89 25 00 7D 3D A3 00
Можешь увеличить его на 1 секунду или вычесть другое значение DateTime?



Исправлено 1 раз(а). Последнее : akvvohinc, 28.07.23 03:03
Ratings: 0 negative/0 positive
Re: Торможу с интервалом
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
типа да, фокс имеет ввиду "время" - это кол секунд от "нулевой даты" плюс доли секунды от единицы...

Скажи твою версию представления даты в фокcе как числа в 64-битном представлении ?

() FA 89 25 00 7D 3D A3 00 - смотрел, епался, недолго (тк ничего не понял)

() но, как число, оно прибавляется-вычитается с/из чиста, как скекунд



Исправлено 2 раз(а). Последнее : of63, 30.07.23 19:46
Ratings: 0 negative/0 positive
Re: Торможу с интервалом
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
akvvohinc
of63
просто - датавремя = число.
Непонятно, что ты имеешь в виду.
Вообще всё - есть последовательность битов, которую комп считает представлением некоторого двоичного числа.
Но если не знать системы кодирования, то простое знание числа ничем не поможет.
Без этого ты не сможешь просто взять число, лежащее в поле DateTime и соответствующее какой-то дате/времени, и производить с ним какие-то осмысленные манипуляции.

Вот число, соответствующее некоторому значению DateTime:
FA 89 25 00 7D 3D A3 00
Можешь увеличить его на 1 секунду или вычесть другое значение DateTime?

это дробное число, в Double, и число секунд его (от часа икс) - число секунд от этой условленной даты

() Серега! Ты гений )



Исправлено 1 раз(а). Последнее : of63, 30.07.23 19:49
Ratings: 0 negative/0 positive
Re: Торможу с интервалом
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Ю Без этого ты не сможешь просто взять число, лежащее в поле DateTime и соответствующее какой-то дате/времени, и производить с ним какие-то осмысленные манипуляции.

Математики делают из твоих слов вывод, что твое понятие о "и производить с ним какие-то осмысленные манипуляции." имеет смысл, смычсл именно твоих понятий
увеличивается если прибавляю
уменьшается если вычитаю
сбьрасываю, если "обнуляю"
умножаю на 1, если умножаю на 1

просто "математика", набор условностей...

()()() Я имел ввиду "прибавить 1 сек" к понятию "мы храним милисекунды от 1980 года, или подобно"... Серега, соберись! )



Исправлено 2 раз(а). Последнее : of63, 30.07.23 20:08
Ratings: 0 negative/0 positive
Re: Торможу с интервалом
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Кстати "интервал" - важное понятие в ОТО (и в СТО) ... Этл синоним понятия "расстояние! в 4-мире (включающее время, но... с учетом отрицатеноно коэфф. при времени... вам еще ето рано)
Ratings: 0 negative/0 positive
Re: Торможу с интервалом
akvvohinc

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
of63
это дробное число, в Double, и число секунд его (от часа икс) - число секунд от этой условленной даты
А вот и нет.

Здесь два целых числа - одно для даты, другое для времени, причем, время с точностью до миллисекунды.
И поэтому если ты, как написал выше, будешь рассматривать его как число
Цитата:
просто - датавремя = число.
то ничего путного из этого не получится.

Но это - хранение DateTime в таблице.
В памяти наверняка иначе - не выяснял, но уверен, что не дробное, а как целое.



Исправлено 1 раз(а). Последнее : akvvohinc, 31.07.23 04:03
Ratings: 0 negative/0 positive
Re: Торможу с интервалом
Артём

Сообщений: 116
Дата регистрации: 23.04.2001
PaulWist
Дано:

Время "отсечки" в часах и минутах, а-ля 0.00, 00.30, 1.00, 1.30..... 23.00, 23.30

Найти:

Сколько осталось до времени "отсечки" в секундах, например time = 9.22 до 9.30 = 8 мин
a = DATETIME()
b = a - CTOT("2023-06-18T00:00:00")
c = FLOOR( b / 30/ 60)
d = b - c * 60* 30
e = FLOOR( 30 - d / 60)
? a, e



Исправлено 1 раз(а). Последнее : Артём, 31.07.23 03:41
Ratings: 0 negative/0 positive
Re: Торможу с интервалом
akvvohinc

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
Не пойдёт.
Не должно быть так, что время с разницей в 2 секунды даёт разницу в 2 минуты.
Посчитайте результат для таких, например, значений a
2023.07.01, 00:29:59
2023.07.01, 00:30:00
2023.07.01, 00:30:01

А вообще проще исходить из того, что:

1) количество секунд в получасе
sec30min = 1800

2) количество секунд, прошедших с начала часа
secpassed = MINUTE(dt)*60 + SEC(dt)

3) тогда до очередной отсечки осталось секунд
sectoсutoff = sec30min - secpassed + IIF(secpassed>sec30min,sec30min,0)
Ratings: 0 negative/0 positive
Re: Торможу с интервалом
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
akvvohinc
of63
это дробное число, в Double, и число секунд его (от часа икс) - число секунд от этой условленной даты
А вот и нет.

Здесь два целых числа - одно для даты, другое для времени, причем, время с точностью до миллисекунды.
И поэтому если ты, как написал выше, будешь рассматривать его как число
Цитата:
просто - датавремя = число.
то ничего путного из этого не получится.

Но это - хранение DateTime в таблице.
В памяти наверняка иначе - не выяснял, но уверен, что не дробное, а как целое.

Твой пост (про датавремя и дата) обозревать, как оно хранится в БД, и как в памяти фокса (это нам не очень доступно) сбсудать интересно было бы, Александр, но это обычная забота прогера, как это все устроено в памяти/файле, пусть сами разбираются, задача банальная, учебная .

() Надо ребенка спросить, как сохранить [дату]время в виде числа (дробного, или целого), что бы он предложил.... Хотел добавить "кроме мычания", но они растут вроде...



Исправлено 1 раз(а). Последнее : of63, 09.08.23 23:10
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 25 (Гостей: 25)

© 2000-2024 Fox Club 
Яндекс.Метрика