الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كل ما يتعلق بدوال التاريخ

مغلقرائج
بدأه nasser50001 في 16 مارس 2005 · 34 رد · 23,293 مشاهدة · في قسم الدروس والمواضيع الهامة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

دوال التعامل مع التاريخ

سنتحدث في هذا الدرس عن أهم الدوال للتعامل مع التاريخ والوقت في الفيجوال بيسك

أولا : نوع بيانات التاريخ

حيث يخزن التاريخ داخل الحاسب على هيئة 8 – byte حيث يخزن كرقم ذات فاصلة عشرية عائمة Floating حيث يعرض التاريخ من المدى 1 يناير سنة 100 إلى 31 ديسمبر 9999 ومدى الوقت يكون من 0:00.00 إلى 23:59:59 حيث يتم وضع التاريخ بين العلامتين # # والتاريخ الافتراضي المخزن بالجهاز هو التاريخ ذات الصيغة القصيرة كذلك الوقت يعرض بالصيغة القصيرة حسب نظام 12 ساعة أو 24 ساعة

عندما يتم تحويل أي أرقام إلى تاريخ فإن القيم العشرية على يمين الفاصلة العشرية تعطي التاريخ والأرقام على يسار الفاصلة العشرية تعطي الوقت

ثانيا دوال التاريخ

1 – دالة إرجاع التاريخ الحالي Date

وتستخدم لعرض التاريخ الحالي المخزن في نظام التشغيل وهو الشكل القصير dd/mm/yyyy

الشكل العام للدالة

Date ()

مثال

اضغط على زر عرض واكتب الجملة التالية

Text1 = date

2 – جملة التاريخ date

حيث تستخدم لضبط تاريخ الجهاز إلى تاريخ معين محدد

الشكل العام للجملة

Date = date

مثال

اكتب الكود التالي في زر عرض

Dim mydate 
mydate = #12/10/1995#
Date = mydate
Text1 = Date

3 – دالة إرجاع الوقت الحالي time

وتستخدم لعرض الوقت الحالي المخزن في نظام التشغيل وهو الشكل القصير HH:MM:SS

الشكل العام للدالة

time ()

مثال

اضغط على زر عرض واكتب الجملة التالية

Text3 = date

4 – جملة التوقيت Timer

حيث تستخدم لإرجاع قيمة الثواني للوقت الحالي ويمكن استخدامها كعداد

الشكل العام للجملة

timer

مثال

حيث يعرض المثال التالي نموذج لإيقاف التطبيق لمدة خمس ثواني مع السماح بالعمل على التطبيقات الأخرى باستخدام جملة Doevents

اضغط زر عداد مرتين واكتب الكود التالي :

Dim PauseTime, Start, Finish, TotalTime
If (MsgBox("Press Yes to pause for 5 seconds", 4)) = vbYes Then
   PauseTime = 5   
   Start = Timer   
   Do While Timer < Start + PauseTime
      DoEvents   
   Loop
   Finish = Timer   
   TotalTime = Finish - Start  
   MsgBox "Paused for " & TotalTime & " seconds"
Else
   End
End If

5 – دالة الوقت والتاريخ Now

لعرض الوقت والتاريخ الحاليين

الشكل العام للجملة

Now

مثال

أضف السطر التالي للكود في زر عرض

Text2 = now

العمليات على التاريخ

1 – دالة الإضافة إلى تاريخ dateadd

حيث تستخدم لإضافة أو طرح قيمة محددة إلى تاريخ محدد

الشكل العام للدالة

DateAdd(interval, number, date)

شرح بارامترات الجملة

1 – interval : وهي القيمة المراد إضافتها إلى التاريخ المعطي ولها عدة إشكال مشروحة في الجدول التالي :

1_1532005131460.4699365.JPG

2 – البارامتر Number

وهو بارامتر العدد المطلوب إضافته ويمكن إن يكون موجب فيضيف إلى التاريخ أو سالب فيطرح من التاريخ .

3 – البارامتر date

وهو التاريخ المراد الإضافة أو الحذف منه

مثال عملي

اضغط على زر إضافة إلى التاريخ ثم اكتب الكود التالي :

Dim FirstDate As Date   ' Declare variables.
Dim IntervalType As String
Dim Number As Integer
Dim Msg
IntervalType = "m"   ' "m" الأشهر
FirstDate = InputBox("Enter a date") 'ادخل أي تاريخ
Number = InputBox("Enter number of months to add") 'اضف القيمة بالموجب أو بالسالب
Msg = "New date: " & DateAdd(IntervalType, Number, FirstDate)
Text1 = Msg

2 – الدالة datediff

وهي دالة تعطي الفرق بين تاريخين محددين وتعود بقيمة صحيحة طويلة

الشكل العام للجملة

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

شرح بارامترات الجملة

1 – البارامتر Interval

1 – interval : وهي القيمة المراد عرضها كناتج الطرح ولها عدة إشكال مشروحة في الجدول السابق

2 – 1date التاريخ الأول

3 – 2date التاريخ الثاني

4 – البارامتر firstdayofweek وهو اختياري وهو لتحديد يوم البدء للأسبوع مثل المسلمين بداية الأسبوع لهم السبت .... وهكذا وله القيم التالية

2_1532005135160.8141291.JPG

5 – البارامتر firstweekofyear وهو اختياري وهو لتحديد الأسبوع الأول في العام وهو غير مهم بالنسبة لاستخدامات الدالة

مثال عملي

اضغط على طرح تاريخين مرتين واكتب الكود التالي والذي يطرح التاريخ المعطى من التاريخ الحالي ويعطي الناتج بالأيام

Dim TheDate As Date   ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
Text1 = Msg

3 – دالة Dtaepart

وتستخدم لإرجاع قيمة صحيحة من تاريخ محدد

الشكل العام للدالة

DatePart(interval, date[,firstdayofweek[, firstweekofyear]])

وقد تم شرح البارامترات في الدوال السابقة

مثال علمي

اضغط على زر إرجاع قيمة من تاريخ واكتب الكود التالي لإرجاع رقم الربع من التاريخ المعطى

Dim TheDate As Date   ' Declare variables.
Dim Msg   
TheDate = InputBox("Enter a date:")
Msg = "Quarter: " & DatePart("q", TheDate)
Text1 =  Msg

4 – دالة Datevalue

وتستخدم لإرجاع التاريخ من القيمة المعطاة حيث تكون القيمة المعطاة قيمة نصية ( لا أعني أنها حروف ولكن أرقام تقرأ على أنها نص كما تأتي الأرقام من مربع نص في الحقيقة نص وليست رقم )

الشكل العام للدالة

DateValue(date)

حيث date هو التاريخ حيث يمكن إدخال التاريخ كل قيمة نصية بينها فاصلة

مثال عملي

اضغط على زر

Dim MyDate As Date
MyDate = DateValue("8,2005")   ' Return a date.
Text1 = MyDate

5 – دالة dateserial

وهي دالة تعود بالتاريخ من قيم معطاة لليوم والشهر والسنة

الشكل العام للدالة

DateSerial(year, month, day)

شرح بارامترات الدالة

1 – year وهي السنة المعطاة وهو رقم يمكن أن يكون بين 100 إلى 9999

2 – month وهو الشهر المعطى وهو أي رقم صحيح

3 – day اليوم المعطى وهو أي رقم صحيح أيضا

يمكنك إجراء عمليات حسابية على الأرقام المدخلة مثل طرح 10 سنوات من العام المعطى وهكذا وكذلك يمكنك استخدام مربعات النصوص لوضع تاريخ محدد أو لإعطاء القيم

مثال عملي

اضغط على زر datesrial واكتب الكود التالي

Dim MyDate
MyDate = DateSerial(1969 - 10, 2, 12) 
Text1 = MyDate

6 – دالة timevalue

وتستخدم لإرجاع الوقت ( قيمة تعبر عن وقت ) من القيمة المعطاة حيث تكون القيمة المعطاة قيمة نصية

الشكل العام للدالة

TimeValue(time)

حيث time هو الوقت المعطى حيث يمكن إدخال الوقت كقيمة نصية بينها نقطتين ويجب الإلتزام بحجم كل قيمة بمعنى عدد الساعات لا يزيد عن 24 ساعة ( المجموع الكلي للوقت ) وكذلك عدد الدقائق لا تزيد عن 60 وكذلك عدد الثواني

مثال عملي

اضغط على زر timvalue

Dim MyTime
MyTime = TimeValue("20:62:20 PM")
Text3 = MyTime

7 – دالة timeserial

وهي دالة تعود بالوقت من قيم معطاة للساعات والدقائق والثواني

الشكل العام للدالة

TimeSerial(hour, minute, second)

شرح بارامترات الدالة

1 – hour وهي الساعات المعطاة وهو رقم يمكن أن يكون بين 0 إلى 23

2 – minute وهو الشهر المعطى وهو أي رقم صحيح

3 – second اليوم المعطى وهو أي رقم صحيح أيضا

يمكنك إجراء عمليات حسابية على الأرقام المدخلة مثل طرح 10 ساعات من الساعات المعطاة وهكذا وكذلك يمكنك استخدام مربعات النصوص لوضع وقت محدد أو لإعطاء القيم وهي .

مثال عملي

اضغط على زر timeserial واكتب الكود التالي

Dim MyDate
MyDate = DateSerial(1969 - 10, 2, 12) 
Text1 = MyDate

هذه معظم الدوال التي تتعامل مع التاريخ أرجو أن تكونوا استفدتم منها

لكم تحياتي

أخوكم ناصر

____________.rar

#2

مشكور يا خويه الله يعطيك الف عافيه

#3

درس رائع وشامل ..

بارك الله فيك خبيرنا الفاضل ..

ani.gif
#4

الف شكر اخوي و الى الامام

المهندس

#5

الله يكرمكم أخواني الفاضل ودا من ذوقكم وكرمكم

مشكووورين

اخوكم ناصر

#6

ما شاء الله تبارك الله عليك اخي العزيز ناصر

دروسك في منتهى الروعه والوضوح ،،، واكثر من هذا انها مرتبه وجاءت من شخص مثلك ..

شكرا لك على الدرس ..

ولو تضعه على نسخه اكروبات يكون جميلا جدا ..

تقبل تحياتي لك اخي العزيز ..

#7

اخي العزيز لدي استفسار لك ان امكن ..

كنت اقرأ في كتاب الاخ تركي العسيري ..

وتفاجأت بشيء هناك

وهو انه ورد في الكتاب :

" فالقيمة 37257.5 تمثل الساعه الثانية عشر ظهرا من يوم 1 يناير عام 2002 "

سؤالي هنا هو : هل لك استاذي الفاضل ان تشرح لي وللاخوة هذا الامر ؟؟؟ وكيف يمكنني تحويل تاريخ الى هذه الصيغه الرقمية ؟؟

وشكري لك مقدما ..

تحياتي

#8

شكرا جزيلا أخواني الأعزاء

أخي فنكشن معنديش والله فكرة في الوقت الحالي ولكن ابحث لك إن شاء الله وارد عليك وإن كان أحد من الأخوة عنده فكرة في الوقت الحالي يا ريت يضعها هنا

لكم تحياتي

أخوكم ناصر

#9

هذا ملف الدرس

تحياتي للجميع

____________.pdf

#10

رائع جدا يا اخي الكريم, سؤال فقط حيرني كثير و يتعلق بفترة من التاريخ range date و الذي يتعلق مثلا بحجز غرفة في فندق حيث أن الفكرة تعتمد على رقم الغرفة بداية الحجز و نهاية الحجز, فكيف يمكن أن نعرف ان الغرفة محجوزة اذا أردنا ادخال البيانات لغرفة سبق حجزها؟

مثلا الغرفة رقم 10 محجوزة منذ شهر من 10/01/2005 الى 20/01/2005 جاء شخص لحجز نفس الغرفة مثلا من 15/01/2005 الى 25/01/2005 فخلال هذه الفترة تكون الغرفة محجوزة أريد أن تظهر رسالة تنبيه تفيد أن الغرفة محجوزة خلال هذا التاريخ.

#11

مرحبا اخي biskra

يمكنك القيام بذلك بعدة طرق

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

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

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

يعني هتستخدم تاريخ عادي

ولن تحتاج لدوال التاريخ السابقة

تحياتي لك

#12

دوال أخرى ........ :D

- دالة فحص التاريخ Isdate

وهذه الدالة تعةد بقيمة Boolean لها القيمة true إذا كان ناتج الفحص تاريخ و false غذا كان ناتج الفحص ليس تاريخ

الشكل العام للدالة

IsDate(expression)

حيث expression هو التعبير المراد فحصه

مثال على الدالة

If IsDate(Text1.Text) Then
MsgBox "this Is  Date"
Else
MsgBox "this Is not Date"
End If

دالة cdate

وهي دالة تستخدم للتعامل مع القيمة المدخلة على أنها قيمة تاريخ بمعنى امكانية التعامل مع القيم المدخلة في مربع النص ( نصوص ) كتاريخ طبعا يجب ان تكون القيم على شكل تايخ

ا

لشكل العام للدالة

cdate( expression)

حيث expression هو التعبير المراد التعامل معها كتاريخ

مثال على الدالة

Dim MyDate, MyShortDate
MyDate = "10 5 2004"
MyShortDate = CDate(MyDate)
Text1.Text = MyShortDate

- دالة fomat

وهذه الدالة مفيدة جدا عندما تريد ان تجعل التاريخ على شكل معين تريده

الشكل العام للدالة

Format(expression[, format[, firstdayofweek[, firstweekofyear]]])

بارامترات الدالة

1 - expression وهي القيمة المدخلة المراد تشكيلها

2 - format وهو الشكل الجديد المطلوب للقيمة المدخلة

3 - firstdayofweek تم شرحها في الدرس السابق

4 - firstweekofyear تم شرحها في الدرس السابق

مثال على الدالة

Dim MyTime, MyDate, MyStr
MyTime = #5:04:23 PM#
MyDate = #1/27/1993#

MyStr = Format(Time, "Long Time")
MyStr = Format(Date, "Long Date")
MyStr = Format(MyTime, "h:m:s")
MyStr = Format(MyTime, "hh:mm:ss AMPM")
MyStr = Format(MyDate, "dddd, mmm d yyyy")
MyStr = Format(23)
MyStr = Format(5459.4, "##,##0.00")
MyStr = Format(334.9, "###0.00")
MyStr = Format(5, "0.00%")
MyStr = Format("HELLO", "<")
MyStr = Format("This is it", ">")

شكرا للجميع

تم تعديل هذه المشاركة بواسطة nasser50001 في 23 مارس 2005 في 11:59

1
#13

تشكر اخي على المجهود

عندي لك سؤال وهوا كيف اخرج رقم الشهر الحالي

بمعنى امرر رقم الشهر الحالي لمتغير وشكرا

تم تعديل هذه المشاركة بواسطة POWER _GIRL في 27 مارس 2005 في 21:12

−1

<< CLICK TO START>>

post-41869-046528000%201305052277.jpg

ليس أن تجد حلا بل أن تجد الافضل

أن تصـــنع الخـيال هذا هوا الأفضل</span>

#14

أشكرك تم العثور على الحل :lol:

emp_D = DatePart("m", Date))

<< CLICK TO START>>

post-41869-046528000%201305052277.jpg

ليس أن تجد حلا بل أن تجد الافضل

أن تصـــنع الخـيال هذا هوا الأفضل</span>

#15

بارك الله فيكم

وأنار الله طريقكم للخير

#16

بارك الله فيكم على هذا الدرس الرائع ....

عندي سؤال شباب....

هو فكرة انشاء تقويم مبني على فترة بين تاريخين بمعني

من تاريخ : 10/1/2005 الى تاريخ 23/3/2005

المطلوب نوزع تلك الأيام المحصورة بين هذين التاريخين في تقويم صحيح(ممكن تكون GRID) بمعني يضبط الأيام والشهور أي(السبت ، الأحد ،......)

أخذ في عين الاعتبار الأشهر 30 و31 وشهر فبراير...

وشكرا لكم

بارك الله فيكم على هذا المنتدى الرائع والمتميز

حسن ..... مبرمج ..... فلسطين

hassan.alaraishy@gmail.com

#17

السلام عليكم

الاخ الكريم انا مبتدئ في الفيجول عندي منظومة خاصة بصيدلية وفي كيف اعمل كود الخاص بصلاحية الدواء اي اذا انتهت الصلاحية يعطي تنبيه ؟ ارجو كتابة الكود والفورم

#18

مشكووووور

#19

موضوع تشكر عليه

158.gif

هناك فرق بين أن تكبر بالعمر

، و أن تكبر بالعقل
فالأولى ، إجباري
، والثانية اختياري .."
 
 

164684_514411088579476_442405016_n.jpg

#20

مشكوررر على الشرح

#21

شكرا

أرجو وضع كود مع مثال يعرض التاريخ الهجري والميلادي في خانتين متجاورتين

أكرر شكري

#22

بارك الله فيك أخي الكريم..

#23

كان عندي سؤال وارجو الافادة حيث انني اقوم بعمل برنامج لشئون العاملين بالشركة التي اعمل بها ومن الطلبات التي طلبتها الشئون الإدارية اخراج تقارير سنوية بالموظفين الذين سوف يخرجون على المعاش في تلك السنة وكذلك من بلغ سنه منذ تعيينه وكذلك 6 أشهر بهدف وجود زيادة في مرتباتهم تتخلل هذه الفترات مما يساعدهم في تبليغ الاستحقاقات الماليه بهذه الاسماء

وقد صممت البرنامج وقارب على الانتهاء الا ان هذه الطلبات حاولت تنفيذها كالتالي\:

1-صممت حقل في قاعدة البيانات اسمة تاريخ المعاش يتم فيه استخدام الدالة adddate() وذلك بزيادة 60 سنه على تاريخ الميلاد المسجل اصلا

2- صممت حقل أخر في قاعدة البيانات اسمه سن المعاش ويتم فيه استخدام الدالة datediff() وبذلك اقوم بطرح تاريخ الميلاد من تاريخ اليوم الذي يتم تسجيل الموظف فيه فمثلا اذا كان تاريخ ميلاده 1/1/1979 وتاريخ تسجيله بالعمل 1/1/2003 اذن يسجل 24 سنه وبالتالي فتاريخ خروجه على المعاش يكون 1/1/2039

وانا كنت اعمل استعلام على الحقل الذي به سن المعاش فاذا كان = 60 فانه يخرج الموظفين الذين بلغ سنهم 60 سنه

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

السؤال: هو هل من الممكن ان تكون دالة التاريخ التي تم فيها تسجيل الموظف متغيره مما يجعل سن المعاش يتغير لجميع الموظفين دون الحاجة الى عمل ذلك بشكل يدوي بحيث حين يكون مسجل 1/1/2003 وسنه 24 سنه اذا وصلنا الى 1/1/2004 ساعتها يتغير تلقائيا سن المعاش الى 25 سنه وهكذا وبالتالي يكون الكود ديناميكيا تماما.

ارجو الافادة لانني اريد ان انتهي من البرنامج في اسرع وقت

ولكم جزيل الشكر وارجو من الله التوفيق لكم جميعا

#24

الله يزيدك ويوفقك

وجزاكم الله خيرا

استغفر الله العظيم من كل ذنب وأتوب إليه

#25

السلام عليكم ورحمة الله وبركاته

انا العضو ميدو

اريد انشا برنامج ينبهك بالمواعيد اى لو التاريخ المدون فى الtext= تاريخ اليوم والمعاد المدون فى text2=الوقت الحالى يرن او بصدر صوت

هذا الموضوع مغلق.

مواضيع مشابهة