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

Вниз

TDatetime.   Найти похожие ветки 

 
SergP   (2003-11-12 09:33) [0]

Есть ли в Дельфи встроенные функции или процедуры для того чтобы:
1. Узнать разницу между двумя TDateTime выраженную в кол-ву секунд.

2. Добавить к TDatetime некоторое кол-во секунд (из integer)?


 
Романов Р.В.   (2003-11-12 09:39) [1]

TDateTime type

Most VCL objects represent date and time values using the TDateTime type. The integral part of a TDateTime value is the number of days that have passed since 12/30/1899. The fractional part of a TDateTime value is fraction of a 24 hour day that has elapsed.

Делай выводы


 
MBo   (2003-11-12 09:39) [2]

Нет желания посмотреть в хелпе описание сущности типа TDateTime?
А если количество секунд в сутках не сумеешь подсчитать, то АП является хранителем этого секрета.


 
ЮЮ   (2003-11-12 09:42) [3]

если эти DateTime получены как Now() в ходе работы приложения, то следует обратить внимание на GetTickCount, на которую и перевод часов во время работы не скажется


 
Anatoly Podgoretsky   (2003-11-12 09:52) [4]

MBo © (12.11.03 09:39) [2]
Я его сразу продаю - в сутках 86400 секунд


 
AntonVS   (2003-11-12 10:01) [5]

DateTimeToTimeStamp(DateTime: TDateTime)
type TTimeStamp = record
Time: Integer; {кол-во миллисекунд после 12 часов}
Date: Integer; {кол-во дней после 1.1.0001}
end;

TimeStampToMSecs(const TimeStamp: TTimeStamp): Comp; - общее кол-во миллисек.


 
AntonVS   (2003-11-12 10:08) [6]

по-поводу второго:
procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);
function EncodeDate(Year, Month, Day: Word): TDateTime;


 
Anatoly Podgoretsky   (2003-11-12 10:10) [7]

Пошли фантазии.


 
Andrew Volkov   (2003-11-12 10:27) [8]

Я не нашел встроеннй функции...долго не искал, но помойму их все равно нету

По поводу первого.
Все что идет в целой части числа относится к году, месяцу и дню. Все остальной идет в дробной части. Отсюда в сутках, как сказали раньше 86400 секунд. Значит, которые помещаются в единицу. Отсюда и считаем (1DateTime-2DateTime)/(1/86400)=разница в секундах.

По поводу второго - из первого
(1/86400)*количество секунд
и все это плюс 1DateTime=новый 1DateTime с приращением

Вот вроде и все...


 
SergP   (2003-11-12 14:32) [9]


> ЮЮ © (12.11.03 09:42) [3]
> если эти DateTime получены как Now() в ходе работы приложения,
> то следует обратить внимание на GetTickCount, на которую
> и перевод часов во время работы не скажется


Нет. Просто в базе одного форума дата и время хранится в виде mediumint(8)unsigned, я так понял что это кол секунд от 1970 года. Вот и нужно преобразовывать.


> Anatoly Podgoretsky © (12.11.03 09:52) [4]
> MBo © (12.11.03 09:39) [2]
> Я его сразу продаю - в сутках 86400 секунд


Большое спасибо. А то я никогда бы до этого не додумался. :)


> Andrew Volkov (12.11.03 10:27) [8]
> Я не нашел встроеннй функции...долго не искал, но помойму
> их все равно нету
>
> По поводу первого.
> Все что идет в целой части числа относится к году, месяцу
> и дню. Все остальной идет в дробной части. Отсюда в сутках,
> как сказали раньше 86400 секунд. Значит, которые помещаются
> в единицу. Отсюда и считаем (1DateTime-2DateTime)/(1/86400)=разница
> в секундах.
>
> По поводу второго - из первого
> (1/86400)*количество секунд
> и все это плюс 1DateTime=новый 1DateTime с приращением
>
> Вот вроде и все...


Хм. просто у меня почему-то сначала была уверенность что 1DateTime-2DateTime возвращает целое число (кол-во суток). Попробовал. Оказалось что все-таки вещественное. Так что все нормально уже.

ЗЫ.. Ну и любят же мастера поиздеваться над народом...
А вопрос то я задавал: "существуют ли встроенные средства?" а не "Помогите написать такой код".


 
Andrew Volkov   (2003-11-12 16:11) [10]

что 1DateTime-2DateTime возвращает целое число

Правильно, целая часть это количество дней, а фрактальная все - что меньше суток



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

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

Наверх





Память: 0.47 MB
Время: 0.009 c
11-78868
Bartov
2003-03-11 14:37
2003.11.24
Unicode


1-79053
Jul
2003-11-13 13:24
2003.11.24
Office_TLB


1-78983
WormSpy
2003-11-14 14:22
2003.11.24
pascal, runtime error 106


1-78963
Agent[007]
2003-11-11 22:25
2003.11.24
MDI Child


14-79111
undert
2003-11-01 22:23
2003.11.24
Вопрос по DBF





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский