Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];

Вниз

Как определить промежуток между двумя переменными TDateTime?   Найти похожие ветки 

 
Mishenka   (2005-01-28 14:18) [0]

Как определить промежуток времени между двумя переменными TDateTime?


 
begin...end ©   (2005-01-28 14:20) [1]

> Mishenka   (28.01.05 14:18)

Вычитанием.


 
Александр Иванов ©   (2005-01-28 14:21) [2]

Промежуток в чем: дни, недели, месяцы, года и т.д.?
DaysBetween
WeeksBetween
MonthBetween
YearsBetween
и т.д.


 
Mishenka   (2005-01-28 14:24) [3]

Так после вычитания получается 1899 год и т.п., а мне надо чтобы было 1 день .. часов .. минут и т.д.


 
begin...end ©   (2005-01-28 14:32) [4]

> [3] Mishenka   (28.01.05 14:24)

После вычитания получается количество дней.
Например, вот столько дней осталось до моего Дня Рождения:

procedure TForm1.Button1Click(Sender: TObject);
var
 D1, D2: TDateTime;
begin
 D1 := Now;
 D2 := StrToDateTime("7.09.2005 17:00");
 Caption := FloatToStr(D2 - D1)
end.


А если вспомнить, что в сутках 24 часа, или 24 * 60 = 1440 минут, - так совсем всё понятно становится.


 
pavel_guzhanov   (2005-01-28 16:28) [5]

Когда то на этом форуме я прочитал вот это:

"Структура и смысл значений типа tDateTime

Данный тип может хранить дату и время. Представляет он из себя на самом деле обычное действительное число с плавающей точкой двойной точности - double.

Целая часть числа преставляет дату - это число суток, прошедших с 30 декабря 1899 года. Т.е. значение 0 представляет 0ч. 0мин. 30-12-1899, значение 1 - 0ч. 0мин. 31-12-1899, 10 - 0ч. 0мин. 9-01-1900, -2 - 0ч. 0мин. 28-12-1899 и т.д.

Чтобы увеличить/уменьшить дату на n дней, нужно прибавить/отнять n от значения даты. Чтобы увеличить/уменьшить дату на n месяцев, нужно воспользоваться функцией IncMonth. Чтобы увеличить/уменьшить дату на n лет нужно воспользоваться той же функцией, передав ей в качестве количества месяцев n*12.

Дробная часть числа представляет время.
Целое значение соответствует 0ч. 0мин. представленной этим значением даты. Чтобы увеличить/уменьшить время на 1 час, нужно прибавить/отнять от значения 1/24. 1 минута соответствует 1/1440. 1 секунда - 1/86400.

2.25, таким образом, соответствует 6ч. 0мин. 1-01-1900."

К сожалению, не помню автора, но на авторство сам не претендую. При работе с TDateTime всегда руководствуюсь этим описанием...


 
Vasya.ru ©   (2005-01-28 16:52) [6]

begin...end ©   (28.01.05 14:32) [4]
Например, вот столько дней осталось до моего Дня Рождения:
"7.09.2005 17:00"

а мне казалось, ты старше


 
Anatoly Podgoretsky ©   (2005-01-28 19:54) [7]

pavel_guzhanov   (28.01.05 16:28) [5]
После вычитания никаких дат не получается, а только промежуток времени между двумя переменными TDateTime



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.04 c
14-1106596098
Narik
2005-01-24 22:48
2005.02.13
Help


3-1105958921
Shizuku
2005-01-17 13:48
2005.02.13
Вернуть результат из вычисляемого поля запроса


3-1105620115
Sacrik
2005-01-13 15:41
2005.02.13
Подключение БД через ADO


14-1106622663
Думкин
2005-01-25 06:11
2005.02.13
С Днем Рождения! 25 января


1-1106934373
Юрий К
2005-01-28 20:46
2005.02.13
RichEdit и Unicode.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский