Forum > Arabic
سؤال حول دوال التاريخ
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