Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как к "сейчас" прибавить время и вычислить новую дату и время?


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);


Наверх

Титульная страница Поиск, карта сайта Написать письмо