Текущий архив: 2007.10.14;
Скачать: CL | DM;
Вниз
Узнать разницу между двумя моментами (дата,время) Найти похожие ветки
← →
Dmitriy_ (2007-09-19 11:39) [0]Подскажите пожалуйста!
Мне нужно узнать разницу в часах и минутах между двумя моментами (сохраненная ранее Дата/время и Дата/время в настоящий момент).
Я думаю сделать это через GetSystemTime примерно так
GetSystemTime(lt2);
if (lt2.wYear=lt1.wYear) and (lt2.wMonth=lt1.wMonth) then
begin
if lt2.wDay=lt1.wDay then
begin
if lt2.wMinute>=lt1.wMinute then result:= (lt2.wHour - lt1.wHour)+round((lt2.wMinute-lt1.wMinute)/100) else
result:= (lt2.wHour - lt1.wHour-1)+round((lt2.wMinute-lt1.wMinute+60)/100);
end else if lt2.wDay>lt1.wDay then
begin
if lt2.wMinute>=lt1.wMinute then result:= (24-lt1.wHour)+lt2.wHour+round((lt2.wMinute-lt1.wMinute)/100) else
result:= (24-lt1.wHour-1)+round((lt2.wMinute-lt1.wMinute+60)/100);
end;
end else <Разница больше суток>
но возник вопрос. если у юзера стоит не 24-часовая настройка, а 12, будет ли это работать или надо GetSystemTime будет выдавать также в 12-часовой системе?
И вообще, может подскажете, как можно решить мою задачу другим, более правильным способом?
Заранее спасибо!
← →
Плохиш © (2007-09-19 11:45) [1]
> Dmitriy_ (19.09.07 11:39)
dHour := trunc((lt2-lt1) * 24);
dMinute := trunc(((lt2-lt1) * 24 - dHour)*60);
> но возник вопрос. если у юзера стоит не 24-часовая настройка,
> а 12, будет ли это работать или надо GetSystemTime будет
> выдавать также в 12-часовой системе?
Стоит актуализировать орешник, даю за эту фразу 2 ореха :-))
← →
Ega23 © (2007-09-19 11:46) [2]Вах!!!
Почти IncDay!
← →
Desdechado © (2007-09-19 11:47) [3]var момент1, момент2: TDateTime;
разница := момент2 - момент1
← →
Ega23 © (2007-09-19 11:48) [4]Автор, почитай, что такое тип TDateTime, как он устроен, а также посмотри в сторону функций Now, HoursBetween и MinutesBetween
← →
Dmitriy_ (2007-09-19 11:51) [5]Удалено модератором
Примечание: А жевать придется тебе
← →
Сергей М. © (2007-09-19 11:58) [6]var
dt1, dt2: TDateTime;
Minutes, Hours: Int64;
..
Minutes := MinutesBetween(dt2, dt1);
Hours := Minutes div 60;
Minutes := Minutes mod 60;
← →
Ega23 © (2007-09-19 11:58) [7]
> Остальным: Форум для новичков, если вам нечего сказать по
> делу - лучше жевать.
Новичкам рекомендуется для начала литературу почитать.
> Все мы крутые в чем-то.
Круто - это когда производная резко изменяется.
> и уверен, что во многих вещах я могу так же над вами угорать
> до потери пульса.
Смотри окончательно не потеряй.
> Не можете помочь - лучше молчите
Глаза разуй. Тебе помогли ВСЕ.
← →
Jeer © (2007-09-19 12:00) [8]
> Dmitriy_ (19.09.07 11:51) [5]
А мы тут все тебе помогаем, у каждого свои способы, но прежде чем начинать вякать "угорающим", не мешает заглянуть в справку и начать с базовой для тебя мисли о формате TDateTime.
Или ты "программы" пишешь методом тыка ?
← →
MsGuns © (2007-09-19 12:14) [9]Просто пример вычисления интервала ;)
// Преобразование интервала времени в строку как чч:мм:сс
function MS_ComFnPrintTimeInterval(tm: integer): string; overload;
function MS_ComFnPrintTimeInterval(ds,de: TDateTime): string; overload;
...
function MS_ComFnPrintTimeInterval(tm: integer): string;
function ExtNCharTo2(NChar: integer): string;
begin
result := IntToStr(NChar);
while Length(result)<2 do
result := "0"+result;
end;
begin
result := ExtNCharTo2(tm div 3600)+":"+
ExtNCharTo2((tm-(tm div 3600)*3600) div 60)+":"+
ExtNCharTo2(tm mod 60);
end;
function MS_ComFnPrintTimeInterval(ds,de: TDateTime): string;
// ds - дата-время начала
// de - дата-время конца
var
tms,tme: TTimeStamp;
ts,te: LongInt;
function ExtNCharToN(Number,NDigits: integer): string;
begin
result := IntToStr(Number);
while Length(result)<NDigits do result := "0"+result;
end;
begin
tms := DateTimeToTimeStamp(ds);
tme := DateTimeToTimeStamp(de);
ts := tms.Date*24*3600+tms.Time div 1000;
te := tme.Date*24*3600+tme.Time div 1000;
result := ""; if ts>te then result := "-";
ts := Abs(te-ts);
result := result+ExtNCharToN(ts div 3600,1)+":"+
ExtNCharToN((ts div 60) mod 60,2)+":"+
ExtNCharToN(ts mod 60,2);
end;
← →
Desdechado © (2007-09-19 12:24) [10]> MsGuns © (19.09.07 12:14) [9]
Загрузил...
Страницы: 1 вся ветка
Текущий архив: 2007.10.14;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.022 c