Forum > Arabic

سؤال حول دوال التاريخ

<< < (2/2)

kito:
السلام عليكم

ربما اجابتي متأخرة قليلا و تشبه الإجابة السابقة إلا أني أفضل مشاركتها
اشتغلت على برنامج العطل
وكنت أضع العطل الوطنية و الدينية في  جدول في قاعدة بيانات
حيث عند تحديد بداية العطلة يتوجب عدم مطابقتها مع أحد التواريخ أو حتى عطلة نهاية الاسبوع التي هي عندنا الجمعة و السبت
لتجنب عطلتي نهاية الاسبوع :

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} --- if  (DayOfWeek( StrToDate( DBDateTimePicker1.Field.Value))=6 )or (DayOfWeek(StrToDate( DBDateTimePicker1.Field.Value))=7) then....

مع ملاحظة أن ترتيب اليوم متعلق برزنامة الجهاز
أما في حدث الانتهاء من تغيير التاريخ
يتم فلترة جدول العطل و الأعياد  على حسب التاريخ المختار
في حال وجود تطابق
يتم اظهار التنبيه


طبعا على ذكر دوال التاريخ  هناك ملاحظة ربما تعرفونها لكني أود ذكرها هنا بشدة لأنها سببت لي مشاكل و أتمنى يكون الرد مرجعا لأحدهم


--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---MonthsBetween(d2, d1);
هذه الدالة قد لا تعطي النتيجة المتوقعة منها

--- Quote ---MonthsBetween(2021/01/01,2021/12/31)  ------------>  11
MonthsBetween(2021/02/01,2021/12/31)  ------------>  10
MonthsBetween(2021/03/01,2021/12/31)  ------------>  10  expected to be 09
MonthsBetween(2021/04/01,2021/12/31)  ------------>  09  expected to be 08
MonthsBetween(2021/05/01,2021/12/31)  ------------>  08  expected to be 07
MonthsBetween(2021/06/01,2021/12/31)  ------------>  06
MonthsBetween(2021/07/01,2021/12/31)  ------------> 06  expected to be 05
MonthsBetween(2021/08/01,2021/12/31)  ------------>  04
MonthsBetween(2021/09/01,2021/12/31)  ------------>  03
MonthsBetween(2021/10/01,2021/12/31)  ------------>  02
MonthsBetween(2021/11/01,2021/12/31)  ------------>  01
MonthsBetween(2021/12/01,2021/12/31)  ------------>  00
--- End quote ---
فيها بارامتر ثالث

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---MonthsBetween(d2, d1, true/false);لأنها افتراضيا  false تحسب الشهر بالتقريب
الشهر = 30.4375
و هو متوسط الشهر لأن هناك شهر 28 30 31
لذلك يتوجب وضع القيمة true
ليتم حساب الشهر 30 يوم
 


KodeZwerg:

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---procedure TForm1.Button1Click(Sender: TObject);var  FS: TFormatSettings;  d1, d2: TDateTime;begin  d1 := EncodeDateTime(2021, 01, 01, 00, 00, 01, 0001);  d2 := EncodeDateTime(2021, 12, 31, 00, 00, 01, 0001);  Memo1.Lines.Add('From: ' + DateToStr(d1) + ' To: ' + DateToStr(d2) + ' is ' + IntToStr(MonthsBetween(d1, d2, True)));  d1 := EncodeDateTime(2021, 02, 01, 00, 00, 01, 0001);  d2 := EncodeDateTime(2021, 12, 31, 00, 00, 01, 0001);  Memo1.Lines.Add('From: ' + DateToStr(d1) + ' To: ' + DateToStr(d2) + ' is ' + IntToStr(MonthsBetween(d1, d2, True)));  d1 := EncodeDateTime(2021, 03, 01, 00, 00, 01, 0001);  d2 := EncodeDateTime(2021, 12, 31, 00, 00, 01, 0001);  Memo1.Lines.Add('From: ' + DateToStr(d1) + ' To: ' + DateToStr(d2) + ' is ' + IntToStr(MonthsBetween(d1, d2, True)));  d1 := EncodeDateTime(2021, 04, 01, 00, 00, 01, 0001);  d2 := EncodeDateTime(2021, 12, 31, 00, 00, 01, 0001);  Memo1.Lines.Add('From: ' + DateToStr(d1) + ' To: ' + DateToStr(d2) + ' is ' + IntToStr(MonthsBetween(d1, d2, True)));  d1 := EncodeDateTime(2021, 05, 01, 00, 00, 01, 0001);  d2 := EncodeDateTime(2021, 12, 31, 00, 00, 01, 0001);  Memo1.Lines.Add('From: ' + DateToStr(d1) + ' To: ' + DateToStr(d2) + ' is ' + IntToStr(MonthsBetween(d1, d2, True)));  d1 := EncodeDateTime(2021, 06, 01, 00, 00, 01, 0001);  d2 := EncodeDateTime(2021, 12, 31, 00, 00, 01, 0001);  Memo1.Lines.Add('From: ' + DateToStr(d1) + ' To: ' + DateToStr(d2) + ' is ' + IntToStr(MonthsBetween(d1, d2, True)));  d1 := EncodeDateTime(2021, 07, 01, 00, 00, 01, 0001);  d2 := EncodeDateTime(2021, 12, 31, 00, 00, 01, 0001);  Memo1.Lines.Add('From: ' + DateToStr(d1) + ' To: ' + DateToStr(d2) + ' is ' + IntToStr(MonthsBetween(d1, d2, True)));  d1 := EncodeDateTime(2021, 08, 01, 00, 00, 01, 0001);  d2 := EncodeDateTime(2021, 12, 31, 00, 00, 01, 0001);  Memo1.Lines.Add('From: ' + DateToStr(d1) + ' To: ' + DateToStr(d2) + ' is ' + IntToStr(MonthsBetween(d1, d2, True)));  d1 := EncodeDateTime(2021, 09, 01, 00, 00, 01, 0001);  d2 := EncodeDateTime(2021, 12, 31, 00, 00, 01, 0001);  Memo1.Lines.Add('From: ' + DateToStr(d1) + ' To: ' + DateToStr(d2) + ' is ' + IntToStr(MonthsBetween(d1, d2, True)));  d1 := EncodeDateTime(2021, 10, 01, 00, 00, 01, 0001);  d2 := EncodeDateTime(2021, 12, 31, 00, 00, 01, 0001);  Memo1.Lines.Add('From: ' + DateToStr(d1) + ' To: ' + DateToStr(d2) + ' is ' + IntToStr(MonthsBetween(d1, d2, True)));  d1 := EncodeDateTime(2021, 11, 01, 00, 00, 01, 0001);  d2 := EncodeDateTime(2021, 12, 31, 00, 00, 01, 0001);  Memo1.Lines.Add('From: ' + DateToStr(d1) + ' To: ' + DateToStr(d2) + ' is ' + IntToStr(MonthsBetween(d1, d2, True)));  d1 := EncodeDateTime(2021, 12, 01, 00, 00, 01, 0001);  d2 := EncodeDateTime(2021, 12, 31, 00, 00, 01, 0001);  Memo1.Lines.Add('From: ' + DateToStr(d1) + ' To: ' + DateToStr(d2) + ' is ' + IntToStr(MonthsBetween(d1, d2, True)));end;
--- Quote ---From: 01.01.2021 To: 31.12.2021 is 11
From: 01.02.2021 To: 31.12.2021 is 10
From: 01.03.2021 To: 31.12.2021 is 9
From: 01.04.2021 To: 31.12.2021 is 8
From: 01.05.2021 To: 31.12.2021 is 7
From: 01.06.2021 To: 31.12.2021 is 6
From: 01.07.2021 To: 31.12.2021 is 5
From: 01.08.2021 To: 31.12.2021 is 4
From: 01.09.2021 To: 31.12.2021 is 3
From: 01.10.2021 To: 31.12.2021 is 2
From: 01.11.2021 To: 31.12.2021 is 1
From: 01.12.2021 To: 31.12.2021 is 0
--- End quote ---
(Dates are display german encoded, on your system it is shown differently.)
(يتم عرض التواريخ بترميز ألماني ، وتظهر على نظامك بشكل مختلف.)

Navigation

[0] Message Index

[*] Previous page

Go to full version