Показать сообщение отдельно
Старый 18.04.2013, 04:21   #1980
Местный
 
Аватар для kpa9pt
 
Регистрация: 13.01.2010
Сообщений: 159
Сказал Спасибо: 18
Имеет 30 спасибок в 23 сообщенях
kpa9pt имеет немного плохого в прошлом
По умолчанию

Доброго времени суток.

Вот пытался найти ответ но не смог:

Вот такая композиция выводит всё верно адекватно:

PHP код:
Timetostr(time); 
А вот такая - просто чуш:
PHP код:
floattostr(time); 
Мне просто нужно от времени отнять 4 часа и получить дату,
time-4 , проблема в том что когда тестировал time, он показывал что-то вроде : 0,9778942789 вот так...
И в итоге DateTostr(time-4) выводит 1899 год 31 декабря...(где-то читал, там что-то значит эта дата 1990)
Как переводить этот шифр?

//J-Fobos: Переменная типа TDateTime содержит значение даты и времени. Она сохраняется как переменная Double, с датой как целая часть, а время как дробная. Дата сохраняется как число дней с 30 декабря 1899. Не понятно, почему не 31 декабря. 01 января 1900 имеет значение 2.
Поскольку TDateTime фактически является Double, то вы можете выполнять над ним вычисления, как будто это было число. Это очень полезно для вычислений типа разницы между двумя датами.


В примере моего числа 0,9778942789 не могу найти целую часть хоть убей, сейчас в 16:13 получил число (копия) = 0,677313888888889 , всей душой пытаюсь понять как привести его к обычному виду.

Всё понятно это число и есть время, целой части даты тут и не должно быть, тогда вопрос как из этой дроби вычесть 4 часа? или как её считать в сравнении.

Всё понял, дробь это процент от 24 часов в сутках...


Вот может кому понадобиться функция с флуктуацией данных времени (часы, минуты, секунды) на входе и соответственно перерасчётом их на выходе включая дату:

PHP код:
function MyTimeAndDate(DifH,DifM,DifS:integer):string;//Переменнst на входе это разница времени в часах, минутах, секундах соответственно пример MyTimeAndDate(0,30,17);
    
var
        
i:integer;
        
H,M,S:integer;
        
RealTime:double;        
        
    
begin
        H
:=int(Time*24);
        
M:=int(Time*24*60-(H*60));
        
S:=int(Time*24*60*60-(H*60*60)-(M*60));
        
        
inc(H,DifH);
        
inc(M,DifM);
        
inc(S,DifS);
        
        
Realtime:=Date+((H*60*60+M*60+S)/(24*60*60));
        
Result:=DateTimetostr(RealTime);
        
        
//msgsend(result);
    
end

Последний раз редактировалось kpa9pt, 18.04.2013 в 18:25.
kpa9pt вне форума   Ответить с цитированием
За это сообщение kpa9pt нажился спасибкой от: