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

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

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

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

فمثلا

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

سوف تعرض تاريخ الشهر السابق لليوم
[-] كل من 4 users say قال شكرا ل محمد نسمان على المشاركة المفيدة
  • kito, h-farid, bouh25, أبو معاذ
الرد
#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'); 
حتى وان كنت على الطريق الصحيح ان لم تتقدم سوف يدهسك من خلفك
[-] كل من 3 users say قال شكرا ل المحجوب على المشاركة المفيدة
  • kito, bouh25, أبو معاذ
الرد
#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;
[-] كل من 3 users say قال شكرا ل Amer12 على المشاركة المفيدة
  • kito, bouh25, أبو معاذ
الرد
#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
[-] كل من 2 users say قال شكرا ل onexite على المشاركة المفيدة
  • bouh25, أبو معاذ
الرد
#7
السلام عليكم
محاولة لحساب الفرق بين تاريخين باليوم والشهر والسنة
إضافة مدة معينة لتاريخ معين
جمع فترات زمنية مختلفة
كود :
http://www.gulfup.com/?0mKoFb


الملفات المرفقة
.rar   DATEDIFF.rar (الحجم : 4.4 ك ب / التحميلات : 236)
[-] كل من 5 users say قال شكرا ل halim.ghenam على المشاركة المفيدة
  • kito, benali137, bouh25, samnaj00, أبو معاذ
الرد
#8
الف شكر و بارك الله في الجميع و جعله في ميزان حسناتكم
[-] كل من 2 users say قال شكرا ل كمال زعطوط على المشاركة المفيدة
  • bouh25, أبو معاذ
الرد
#9
بارك الله فيك على المعلومة
[-] كل من 2 users say قال شكرا ل abdelhakim على المشاركة المفيدة
  • bouh25, أبو معاذ
الرد
#10
برنامج غاية في في الروعة ربي يجازيك أخي
[-] كل من 2 users say قال شكرا ل benali137 على المشاركة المفيدة
  • bouh25, أبو معاذ
الرد


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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم