delphi4arab منتديات دلفي للعرب
كيف يتم حسب التاريخ بهده الطريقه - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف يتم حسب التاريخ بهده الطريقه (/showthread.php?tid=3702)



كيف يتم حسب التاريخ بهده الطريقه - annabil23 - 17-12-2011

لدي dateDEBUT,dateFIN,heur_DEBUT,Heur_FIN
مكونات(sdateedit1,sdateedit2)(stimepiker1,stimepik er2)من alphacontrole
لما اختار البدايه من dateDEBUT و heur_DEBUT هي من يوم 28/11/2011و علي الساعة 0800
الي النهايه الي dateFIN و Heur_FIN هي الي يوم 02/12/2011و علي الساعة 1630 تكون الطباعه بهده الطريقه
من 30,29,28/11/2011علي الساعه 8:00
الي 30,29,28/11/2011علي الساعه 16:30
و
من 2.1/12/2011علي الساعه 8:00
الي 2.1/12/2011علي الساعه 16:30

اما اذا كان التارخ من البداية يوم 02/11/2011 علي الساعة 08:00
الي تاريخ نهايه العمل يوم 04/11/2011 على الساعة16:30

السؤال هو كيف الطباعة تكون بهذه الطريقه اي اوقات العمل من البدايه الي نهاية العمل
من 4,3,2/11/2011علي الساعه 08:00اي تاريخ بدايت العمل مع توقيت البدايه
الي 4,3,2/11/2011علي الساعه و 16:30تاريخ نهاية العمل مع توقيت النهايه

اي ان كل يوم يبداء العمل علي الساعه 08:00 وينتهي العمل المساء علي الساعة16:30

طيلت ثلاثة ايام 4,3,2/11/2011


كيف يتم حسب التاريخ بهده الطريقه - imadma - 18-12-2011

لم أفهم
اوضح أكثر


كيف يتم حسب التاريخ بهده الطريقه - kachwahed - 27-12-2011

السلام عليكم
في مثل هذه الحالات حاول تقسيم المشكل إلى أجزاء، ثم حل كل جزء على حدة
الأمر لن يتعدى أكثر من شروط (if..then) ومقارنات (>=<)
لا تحاول إيجاد الحل النهائي دفعة واحدة!
ثم إن استوقفتك جزئية اكتب سؤالا
بالتوفيق.



كيف يتم حسب التاريخ بهده الطريقه - nebchadelphi - 31-12-2011

السلام عليكم
اخي وضح ماذا تريد أو ماهو الهدف
السؤال غير مفهوم
شكرا والسلام عليكم


كيف يتم حسب التاريخ بهده الطريقه - annabil23 - 04-12-2012

PHP كود :
procedure DayBteweenDate(DATE1, DATE2: Tdate; Memo1,Memo2: TsMemo);
var
  
F: Byte;
  
I, J, N, V: Integer;
  
Jour1, Mois1, Annee1: Word;
  
Jour2, Mois2, Annee2: Word;
  
S,MS: string;
begin
  Memo1
.Lines.Clear;
  
Memo2.Lines.Clear;
  
decodedate(DATE1, Annee1, Mois1, Jour1);
  
decodedate(DATE2, Annee2, Mois2, Jour2);
  
F := MonthsBetween(DATE1, DATE2);
  
// حساب كم يوجد من شهر بين التاريخين
  
V := (30 - Jour1) + Jour2;
  if (
V <= 29) then
    inc
(F);
  
// if sDateEdit1.date > sDateEdit2.date then sDateEdit2.DragDone();

  
for I := 0 to F do // حلقة تكرارية من صفر شهر الى النتيجة
  
begin
    
case (Mois1) of // اذا الشهر للتاريخ الاول أخذ احد القيم نفذ على حسبه
      
1, 3, 5, 7, 8, 10, 12: // اشهر التي تنتهي بـ 31
        
begin
          
if ((Annee1 = Annee2) and (Mois1 = Mois2)) then
            N 
:= Jour2
            
// اذا كان العام نفسه و الشهر نفسه فالعدد نون يساوي اليوم للتاريخ الثاني
          
else
            
N := 31; // و الا نون يساوي واحد وثلاثين
          
for J := Jour1 to N do // حلقة تكرارية من اليوم للتاريخ الاول الى نون
          
begin
            
if J = N - 1 then
              S 
:= S + intToStr(J) + ' et '
            
else
              
S := S + intToStr(J) + ','; // يضع الارقام في سلسة نصيه
          
end;
          if 
Mois1=1 then MS:= 'Jan';
          if 
Mois1=3 then MS:= 'Mar';
          if 
Mois1=5 then MS:= 'Mai';
          if 
Mois1=7 then MS:= 'Jul';
          if 
Mois1=8 then MS:= 'Aou';
          if 
Mois1=10 then MS:= 'Oct';
          if 
Mois1=12 then MS:= 'Dec';
          
Delete(S, length(S), 1); // احذف اخر مطة في السلسة النصية
          
Memo1.Lines.Add(S + ' / ' + (MS) + ' / ' + intToStr(Annee1));
          
Memo2.Lines.Add(S + ' / ' + (MS) + ' / ' + intToStr(Annee1));
          
// اعرض التاريخ
          
if (Mois1 = 12) then // اذا كان الشهر هو الاخير
          
begin
            Mois1 
:= 1; // حول الشهر الى جانفي
            
Annee1 := Annee1 + 1; // زد عاما على التاريخ
          
end
          
else // و الا
            
Mois1 := Mois1 + 1; // زد الشهر بواحد
          
Jour1 := 1; // و ارجع اليوم الى قيمة واحد
          
S := 'et le:'; // تفريغ قيمة السلسلة النصية للعودة الى الحلقة

        
end;
      
4, 6, 9, 11:
        
begin
          
if ((Annee1 = Annee2) and (Mois1 = Mois2)) then
            N 
:= Jour2
          
else
            
N := 30; // ياخذ نون القيمة 30
          
for J := Jour1 to N do
          
begin
            
if J = N - 1 then
              S 
:= S + intToStr(J) + ' et '
            
else
              
S := S + intToStr(J) + ',';
          
end;
          if 
Mois1=4 then MS:= 'Avr';
          if 
Mois1=6 then MS:= 'Jun';
          if 
Mois1=9 then MS:= 'Sep';
          if 
Mois1=11 then MS:= 'Nov';

          
Delete(S, length(S), 1);
          
Memo1.Lines.Add(S + ' / ' + (MS) + ' / ' + intToStr(Annee1));
          
Memo2.Lines.Add(S + ' / ' + (MS) + ' / ' + intToStr(Annee1));
          
Mois1 := Mois1 + 1;
          
Jour1 := 1;
          
S := 'et le:';

        
end;
      
2:
        
begin
          
if (Annee1 mod 4 = 0) then // التحقق من السنة كبيسة او لا
          
begin
            
if ((Annee1 = Annee2) and (Mois1 = Mois2)) then
              N 
:= Jour2
            
else
              
N := 29; // نون تاخذ قيمة 29
            
for J := Jour1 to N do
            
begin
              
if J = N - 1 then
                S 
:= S + intToStr(J) + ' et '
              
else
                
S := S + intToStr(J) + ',';
            
end;
            if 
Mois1=2then MS:= 'Fev';
            
Delete(S, length(S), 1);
            
Memo1.Lines.Add(S + ' / ' + (MS) + ' / ' + intToStr(Annee1));
            
Memo2.Lines.Add(S + ' / ' + (MS) + ' / ' + intToStr(Annee1));
            
Mois1 := Mois1 + 1;
            
Jour1 := 1;
            
S := 'et le:';

          
end
          
else
          
begin
            
if ((Annee1 = Annee2) and (Mois1 = Mois2)) then
              N 
:= Jour2
            
else
              
N := 28; // نون تاخذ قيمة 28
            
for J := Jour1 to N do
            
begin
              
if J = N - 1 then
                S 
:= S + intToStr(J) + ' et '
              
else
                
S := S + intToStr(J) + ',';
            
end;
            if 
Mois1=2then MS:= 'Fev';
            
Delete(S, length(S), 1);
            
Memo1.Lines.Add(S + ' / ' + (MS) + ' / ' + intToStr(Annee1));
            
Memo2.Lines.Add(S + ' / ' + (MS) + ' / ' + intToStr(Annee1));
            
Mois1 := Mois1 + 1;
            
Jour1 := 1;
            
S := 'et le:';

          
end;

        
end;
    
end;
  
end;
end; 

تم العثور على الحل بارك الله فيكم