السلام عليكم
لدي برنامج تطبيقة من خلاله حساب عدد الساعات بين تارخين بمعنى
اضع تاريخ اليوم مع ساعة البدء
و اضع تاريخ الغد مع ساعة النهاية
وعندما اقوا له عد يقوم بعد عدد الساعات بين التريخين
البرنامج مرفق
مستعجل اخواني اجركم على الله
كود :
var
fromdate, toDate : TDateTime;
begin
// Set up our date variables
fromDate := EncodeDateTime(2000, 02, 26, 10, 0, 0, 0);
toDate := EncodeDateTime(2000, 02, 29, 9, 0, 0, 0);
// Display these dates and the days between them
ShowMessage('From date = '+DateTimeToStr(fromDate));
ShowMessage('To date = '+DateTimeToStr(toDate));
ShowMessage('Whole days difference = '+
IntToStr(DaysBetween(toDate, fromDate))+' days');
end;
إقتباس :Show full unit code
From date = 26/02/2000 10:00:00
To date = 29/02/2000 09:00:00
Whole days difference = 2 days
or
use:
DateUtils, IdGlobalProtocols
كود :
procedure TForm1.Button1Click(Sender: TObject);
var
day, hour: Integer;
fromdate, toDate: TDateTime;
begin
fromdate := Date1.Date;
toDate := Date2.Date;
day := DaysBetween(toDate, fromdate);
fromdate := Date1.Time;
toDate := Date2.Time;
hour := DaysBetween(toDate, fromdate) ;
hour :=hour + day*24 ;
heure1.Text := IntToStr(hour) ;
// day := CompareDateTime(Date2.DateTime, Date1.DateTime ) ;
// hour := CompareDateTime(Date2.Time, Date1.Time ) ; ;
// hour :=hour + day*24 ;
end;
كود :
procedure TMainForm.btCompareDatesClick(Sender: TObject);
var
Result: Integer;
begin
mmInfo.Lines.Clear;
{ Compares the two dates }
Result := CompareDate(StrToDate(edFirstDate.Text), StrToDate(edSecondDate.Text));
{ Write the date in the memo }
mmInfo.Lines.Add('First date: ' + edFirstDate.Text);
mmInfo.Lines.Add('Second date: ' + edSecondDate.Text);
{ Write the result of the comparison }
if Result = LessThanValue then
mmInfo.Lines.Add('The first date is before the second date.');
if Result = EqualsValue then
mmInfo.Lines.Add('The first date is the same as the second date.');
if Result = GreaterThanValue then
mmInfo.Lines.Add('The first date is after the second date.');
end;
procedure TMainForm.btGetFirstDateClick(Sender: TObject);
begin
{ Write the selected date in the first edit-box }
edFirstDate.Text := DateToStr(DateOf(DateTimePicker1.DateTime));
end;
procedure TMainForm.btGetInfoClick(Sender: TObject);
begin
{ Get the day from the selected date }
edDay.Text := IntToStr(DayOf(DateTimePicker1.Date));
{ Get the moonth from the selected date }
edMonth.Text := IntToStr(MonthOf(DateTimePicker1.Date));
{ Get the year from the selected date }
edYear.Text := IntToStr(YearOf(DateTimePicker1.Date));
{ Get the hour from the selected date }
edHour.Text := IntToStr(HourOf(TimeOf(DateTimePicker1.Time)));
{ Get the minute from the selected date }
edMinute.Text := IntToStr(MinuteOf(TimeOf(DateTimePicker1.Time)));
{ Get the second from the selected date }
edSecond.Text := IntToStr(SecondOf(TimeOf(DateTimePicker1.Time)));
{ Get the millisecond from the selected date }
edMilliSecond.Text := IntToStr(MilliSecondOf(TimeOf(DateTimePicker1.Time)));
end;
procedure TMainForm.btGetSecondDateClick(Sender: TObject);
begin
{ Write the selected date in the second edit-box }
edSecondDate.Text := DateToStr(DateOf(DateTimePicker1.DateTime));
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
DateTimePicker1.Format := 'dd/MM/yyyy hh:mm';
{ Get the current date and time }
DateTimePicker1.Date := Date;
DateTimePicker1.Time := Time;
{ Write the current date in the first edit-box }
edFirstDate.Text := DateToStr(Today);
{ Write the previous date in the second edit-box }
edSecondDate.Text := DateToStr(Yesterday);
end;
كود :
procedure TMainForm.btCompareDatesClick(Sender: TObject);
var
Result: Integer;
begin
mmInfo.Lines.Clear;
{ Compares the two dates }
Result := CompareDate(StrToDate(edFirstDate.Text), StrToDate(edSecondDate.Text));
{ Write the date in the memo }
mmInfo.Lines.Add('First date: ' + edFirstDate.Text);
mmInfo.Lines.Add('Second date: ' + edSecondDate.Text);
{ Write the result of the comparison }
if Result = LessThanValue then
mmInfo.Lines.Add('The first date is before the second date.');
if Result = EqualsValue then
mmInfo.Lines.Add('The first date is the same as the second date.');
if Result = GreaterThanValue then
mmInfo.Lines.Add('The first date is after the second date.');
end;
procedure TMainForm.btGetFirstDateClick(Sender: TObject);
begin
{ Write the selected date in the first edit-box }
edFirstDate.Text := DateToStr(DateOf(DateTimePicker1.DateTime));
end;
procedure TMainForm.btGetInfoClick(Sender: TObject);
begin
{ Get the day from the selected date }
edDay.Text := IntToStr(DayOf(DateTimePicker1.Date));
{ Get the moonth from the selected date }
edMonth.Text := IntToStr(MonthOf(DateTimePicker1.Date));
{ Get the year from the selected date }
edYear.Text := IntToStr(YearOf(DateTimePicker1.Date));
{ Get the hour from the selected date }
edHour.Text := IntToStr(HourOf(TimeOf(DateTimePicker1.Time)));
{ Get the minute from the selected date }
edMinute.Text := IntToStr(MinuteOf(TimeOf(DateTimePicker1.Time)));
{ Get the second from the selected date }
edSecond.Text := IntToStr(SecondOf(TimeOf(DateTimePicker1.Time)));
{ Get the millisecond from the selected date }
edMilliSecond.Text := IntToStr(MilliSecondOf(TimeOf(DateTimePicker1.Time)));
end;
procedure TMainForm.btGetSecondDateClick(Sender: TObject);
begin
{ Write the selected date in the second edit-box }
edSecondDate.Text := DateToStr(DateOf(DateTimePicker1.DateTime));
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
DateTimePicker1.Format := 'dd/MM/yyyy hh:mm';
{ Get the current date and time }
DateTimePicker1.Date := Date;
DateTimePicker1.Time := Time;
{ Write the current date in the first edit-box }
edFirstDate.Text := DateToStr(Today);
{ Write the previous date in the second edit-box }
edSecondDate.Text := DateToStr(Yesterday);
end;
إقتباس :Call CompareDate to compare the two TDateTime values specified by A and B. CompareDate returns:
LessThanValue if A occurs on a day prior to the day specified by B.
EqualsValue if A occurs on the same day as B, ignoring the time of day.
GreaterThanValue if A occurs on a day that follows the day specified by B.
كود :
procedure TMainForm.btCompareDatesClick(Sender: TObject);
var
Result: Integer;
begin
mmInfo.Lines.Clear;
{ Compares the two dates }
Result := CompareDate(StrToDate(edFirstDate.Text), StrToDate(edSecondDate.Text));
{ Write the date in the memo }
mmInfo.Lines.Add('First date: ' + edFirstDate.Text);
mmInfo.Lines.Add('Second date: ' + edSecondDate.Text);
{ Write the result of the comparison }
if Result = LessThanValue then
mmInfo.Lines.Add('The first date is before the second date.');
if Result = EqualsValue then
mmInfo.Lines.Add('The first date is the same as the second date.');
if Result = GreaterThanValue then
mmInfo.Lines.Add('The first date is after the second date.');
end;
procedure TMainForm.btGetFirstDateClick(Sender: TObject);
begin
{ Write the selected date in the first edit-box }
edFirstDate.Text := DateToStr(DateOf(DateTimePicker1.DateTime));
end;
procedure TMainForm.btGetInfoClick(Sender: TObject);
begin
{ Get the day from the selected date }
edDay.Text := IntToStr(DayOf(DateTimePicker1.Date));
{ Get the moonth from the selected date }
edMonth.Text := IntToStr(MonthOf(DateTimePicker1.Date));
{ Get the year from the selected date }
edYear.Text := IntToStr(YearOf(DateTimePicker1.Date));
{ Get the hour from the selected date }
edHour.Text := IntToStr(HourOf(TimeOf(DateTimePicker1.Time)));
{ Get the minute from the selected date }
edMinute.Text := IntToStr(MinuteOf(TimeOf(DateTimePicker1.Time)));
{ Get the second from the selected date }
edSecond.Text := IntToStr(SecondOf(TimeOf(DateTimePicker1.Time)));
{ Get the millisecond from the selected date }
edMilliSecond.Text := IntToStr(MilliSecondOf(TimeOf(DateTimePicker1.Time)));
end;
procedure TMainForm.btGetSecondDateClick(Sender: TObject);
begin
{ Write the selected date in the second edit-box }
edSecondDate.Text := DateToStr(DateOf(DateTimePicker1.DateTime));
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
DateTimePicker1.Format := 'dd/MM/yyyy hh:mm';
{ Get the current date and time }
DateTimePicker1.Date := Date;
DateTimePicker1.Time := Time;
{ Write the current date in the first edit-box }
edFirstDate.Text := DateToStr(Today);
{ Write the previous date in the second edit-box }
edSecondDate.Text := DateToStr(Yesterday);
end;
ممكن ات تطبق الكود سورس على التطبيق الذي وصعته اخي الكريم شكرا لك على المجهود
كود :
procedure TForm1.Button1Click(Sender: TObject);
var
fromdate, toDate : TDateTime;
begin
// Set up our date variables
fromDate := EncodeDateTime(1899, 12, 30, 5, 09, 00, 0);// 12/30/1899 5:09:00 PM
//
toDate := EncodeDateTime(2011, 08, 03, 6, 29, 05, 0); // 8/3/2011 6:29:05 PM
//
// Display these dates and the days between them
ShowMessage('From date = '+DateTimeToStr(fromDate));
ShowMessage('To date = '+DateTimeToStr(toDate));
ShowMessage('Whole days difference = '+
IntToStr(DaysBetween(toDate, fromDate))+' days');
ShowMessage('Whole hours difference = '+
IntToStr(HoursBetween(toDate, fromDate))+' hours');
end;
السلام اخي هنا المشكل فلم يتعرف على DaysBetween
لقد عرفت مشاكل كثيرة في الكود سورس
اخي الكريم ممكن ان ترفق الكود سوري في البرنامج الذي وضعته انا وكون شاكرا لك رمضان كريم صديقي
عملت لك اسورس وصورة ولكن انقعت الكهرباء
حضك نحس!!
ولكن ساعمل لك مرة ثاني