التعامل مع التواريخ (الدالة التي يغفل عنها الكثير)
#1
السلام عليكم ورحمة الله وبركاته ،
لا شك أن الكثير منا يتعامل في برامجه مع التواريخ و قد يبحث في بعض الأحيان عن عملية الطرح أو الجمع بين تاريخين ،
فأحببت أن أضع هذه المشاركة البسيطة لتتعامل مع التواريخ .
هناك دالة يغفل عن التعامل بها الكثير من المبرمجين و هي دالة خاصة بالتعامل مع التواريخ و هي
[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:
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
(أبومعاذ  Unprogramme  سابقا)
[-] كل من 2 users say قال شكرا ل أبو معاذ على المشاركة المفيدة
  • h-farid, kito
الرد
#2

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

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

[-] كل من 3 users say قال شكرا ل B.M.AbdelAziZ على المشاركة المفيدة
  • h-farid, kito, كمال زعطوط
الرد
#3
يمكن إستخدام IncDay أو incMonth برقم سالب لمعرفة الأشهر السابقة أيضاً

فمثلا

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

سوف تعرض تاريخ الشهر السابق لليوم
[-] كل من 2 users say قال شكرا ل محمد نسمان على المشاركة المفيدة
  • h-farid, kito
الرد
#4
ما دام الوضع مشاركه من الجميع فهذه مشاركتي : )

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

PHP كود :
var
  
FDstring;
begin
  D 
:= DateToStr(sDateEdit3.date);
  
:= DateToStr(sDateEdit4.date);
  
Table1.filter := 'date1>=''' '''and date1<=''' '''';
  
table1.Filtered := true;
  
Table1.First;
  
sSpeedButton1.Caption := IntToStr(Table1.RecordCount);
  if 
Table1.RecordCount0 then
  ShowMessage
('not faund'); 
حتى وان كنت على الطريق الصحيح ان لم تتقدم سوف يدهسك من خلفك
[-] كل من 1 user says قال شكرا ل المحجوب على المشاركة المفيدة
  • kito
الرد
#5
هناك خطأ بسيط
الدالة DayOfTheYear وظيفتها هي الحصول على ترتيب اليوم في السنة وهي تأخذ الأرقام مابين 1 الى
365 أو 366 اذا كانت السنة كبيسة

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

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

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

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

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


الملفات المرفقة
.rar   DATEDIFF.rar (الحجم : 4.4 KB / التحميلات : 193)
[-] كل من 1 user says قال شكرا ل halim.ghenam على المشاركة المفيدة
  • kito
الرد
#8
الف شكر و بارك الله في الجميع و جعله في ميزان حسناتكم
الرد
#9
بارك الله فيك على المعلومة
الرد


التنقل السريع :


مستخدمين يتصفحوا هذا الموضوع: 1 ضيف