delphi4arab منتديات دلفي للعرب

نسخة كاملة : التعامل مع التواريخ (الدالة التي يغفل عنها الكثير)
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته ،
لا شك أن الكثير منا يتعامل في برامجه مع التواريخ و قد يبحث في بعض الأحيان عن عملية الطرح أو الجمع بين تاريخين ،
فأحببت أن أضع هذه المشاركة البسيطة لتتعامل مع التواريخ .
هناك دالة يغفل عن التعامل بها الكثير من المبرمجين و هي دالة خاصة بالتعامل مع التواريخ و هي
[COLOR="Navy"]DateUtils[/COLOR]

وللأمانة العلمية الموضوع مقتبس من منتدى فرنسي.

1- كيف أضيف عدد أيام إلى تاريخ معين .

كود :
uses DateUtils; var Date1 : TdateTime; NbDay : Integer; begin Date1 := EncodeDate(2010, 3, 1); Date1 := [color=red][B]IncDay[/B][/color](Date1, NbDay);

2- حساب عدد الأيام بيت تاريخين :

كود :
uses DateUtils; var Date1, Date2 : TDateTime; Diff : Extended; Day1, Month1, year1 : Word; day2, Month2, year2 : Word; begin Date1 := EncodeDate(Year1, Month1, Day1); Date2 := EncodeDate(year2, Month2, Day2); Diff := [B][color=red]DaysBetween[/color][/B](Date2, Date1); end;


3- حساب عدد الأيام السنة لتاريخ معين :

كود :
uses DateUtils; var Date1 : TDateTime; NumeroJ : Integer; begin Date1 := Now; {Date système} NumeroJ := [B][color=red]DayOfTheYear[/color][/B](Date1); end;

4- حساب عدد الأسابيع السنة لتاريخ معين :


كود :
uses DateUtils; var Date1 : TDateTime; NumSem : Word; begin Date1 := EncodeDate(2002, 11, 1); NumSem := [B][color=red]WeekOfTheYear[/color][/B](Date1); end;

هذا ما أردت بيانه و أسأل الله لي و لكم التوفيق و السداد و الرشاد.
:monster1:

السلام عليكم ورحمة الله
اضافة بسيطة
الامر التالي
كود :
Date1 := IncDay(Date1, NbDay);
يمكن كتابته
كود :
Date1 := Date1+ NbDay;

ايضا هذا
كود :
Diff := DaysBetween(Date2, Date1);
يمكن كتابته
كود :
Diff := Date2- Date1;
مع الانتباه الطرح من التاريخ الأكبر/الأحدث او كخيار اخر اهمال ذلك واخذ القيمة المطلقة
كود :
Diff := Abs(Date2- Date1);

يمكن إستخدام IncDay أو incMonth برقم سالب لمعرفة الأشهر السابقة أيضاً

فمثلا

PHP كود :
ShowMessage(DateToStr(IncMonth(now,-1))); 

سوف تعرض تاريخ الشهر السابق لليوم
ما دام الوضع مشاركه من الجميع فهذه مشاركتي : )

للبحث بين تاريخين

PHP كود :
var
  
F, D: string;
begin
  D 
:= DateToStr(sDateEdit3.date);
  
F := DateToStr(sDateEdit4.date);
  
Table1.filter := 'date1>=''' + D + '''and date1<=''' + F + '''';
  
table1.Filtered := true;
  
Table1.First;
  
sSpeedButton1.Caption := IntToStr(Table1.RecordCount);
  if 
Table1.RecordCount= 0 then
  ShowMessage
('not faund'); 
هناك خطأ بسيط
الدالة DayOfTheYear وظيفتها هي الحصول على ترتيب اليوم في السنة وهي تأخذ الأرقام مابين 1 الى
365 أو 366 اذا كانت السنة كبيسة

كود :
function DayOfTheYear(const AValue: TDateTime): Word;

أما للحصول على عدد أيام السنة فالدالة DaysInAYear تقوم بذلك

كود :
function DaysInAYear(const AValue: TDateTime): Word;

نفس الشيء بالنسبة للدالة WeekOfTheYear فهي تعطي ترتيب الأسبوع ضمن السنة
فمثلا الأسبوع الأول من الشهر الأول في العام يكون ترتيبه واحد وهكذا بالنسبة لباقي الأسابيع.

أما عدد الأسابيع في السنة فالدالة WeeksInAYear تقوم بذلك
كود :
WeeksInAYear(const AYear: Word): Word;
PHP كود :
Function DateArabe(Today : TDateTime): String;
const
    
Yaom : array[1..7] of string=('الأحد','الإثنين','الثلاثاء','الأربعاء','الخميس','الجمعة','السبت');
    
Chahre: array[1..12] of string=('جانفي','فيفري','مارس','أفريل','ماي','جوان','جويلية','أوت','سبتمبر','أكتوبر','نوفمبر','ديسمبر');
var
    
d,m,y : word; s:string;
begin
  DecodeDate
(today,y,m,d);
  
s:= Yaom[DayOfWeek(today)];
  
s := s + ' ' + IntToStr(d);
  
s := s + ' ' + Chahre[m];
  
s := s + ' ' + IntToStr(y);
  
Result := s;
end; 
السلام عليكم
محاولة لحساب الفرق بين تاريخين باليوم والشهر والسنة
إضافة مدة معينة لتاريخ معين
جمع فترات زمنية مختلفة
كود :
http://www.gulfup.com/?0mKoFb
الف شكر و بارك الله في الجميع و جعله في ميزان حسناتكم
بارك الله فيك على المعلومة
برنامج غاية في في الروعة ربي يجازيك أخي