![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как к "сейчас" прибавить время и вычислить новую дату и время?
hghhhJ © (2013-01-01 19:20:00)Здравствуйте!
С наступившим всех!
Подскажите, пожалуйста, как в Delphi, зная текущую дату и время (через функцию Now), прибавить к нему определенное число часов и минут, получить новые дату и время, а затем взять из этого значения отдельно саму дату и новое время???
Спасибо!
KilkennyCat (2013-01-10 03:33:00) [1]Теоретически, [2] имеет точность в 1 секунду. никак не 2 минуты.
KilkennyCat (2013-01-10 03:24:00) [2]можно высчитать погрешность, не тестируя, ложный лишь последний знак.
Германн (2013-01-10 02:09:00) [3]
> т.к. алгоритм Dimka Maslov
> давал погрешность ~2 мин. для одного вычисления
>
Интересно бы посмотреть, как вы тестировали сей "алгоритм"?
:)
hghhhJ (2013-01-09 20:28:00) [4]Спасибо Всем!
В результате воспользовался алгоритмом Sha
за одно сложение будет точнее,
полтора часа или 90 минут - это конечная дробь (1/16)
т.к. алгоритм Dimka Maslov
давал погрешность ~2 мин. для одного вычисления
Dimka Maslov (2013-01-02 12:49:00) [5]
> Sha © (01.01.13 23:52) [6]
Это только для примера. Сам я с этим типом не работаю, а предпочитаю получать дату и время напрямую при помощи соотв. функций WinAPI
Sha (2013-01-01 23:52:00) [6]> Dimka Maslov © (01.01.13 20:06) [2]
за одно сложение будет точнее,
полтора часа или 90 минут - это конечная дробь (1/16)
Rouse_ (2013-01-01 22:59:00) [7]Есть множество нюансов :)
http://www.guildalfa.ru/alsha/node/7
Очень злой (2013-01-01 22:45:00) [8]
> зная текущую дату и время (через функцию Now), прибавить
> к нему определенное число часов и минут,
function GetNewDateTime(hour, min:integer);
begin
sleep(hour*3600000+min*60000);
Result:=now;
end;
:)
hghhhJ (2013-01-01 20:22:00) [9]Спасибо!
Dimka Maslov (2013-01-01 20:06:00) [10]Один час это 1/24 (одна двадцать четвёртая) суток. Одна минута это 1/1440 (одна тысяча четыреста сороковая). Время хранится как дробная часть вещественного числа.
D := Now + 1 / 24 + 30 / 1440; \\ Прибавили полтора часа
Юрий Зотов (2013-01-01 19:44:00) [11]uses
DateUtils;
var
DT, D, T: TDateTime;
DT := Now;
DT := IncHour(D, 1);
DT := IncMinute(D, 30);
D := DateOf(DT);
T := TimeOf(DT);