تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
معالجة الوقت والتاريخ
#1
كاتب الموضوع : محمد الناشـري


بسم الله ارحمن الرحيم
معالجة الوقت والتاريخ
فئة DateTimeتستخدم الفئة DateTime في تخزين القيم الخاصة بالتاريخ والوقت وتعد احد أنواع البيانات الأساسية في بيئة Framework . ويتم تخزين القيم الخاصة بالتاريخ والوقت داخلياً كأرقام من نوع Double .
يتعلق الجزء الصحيح من القيمة بالتاريخ بينما يتعلق الجزء الكسرى بالوقت .
لتحويل متغير من نوع DateTime يمكنك استخدام الأسلوب ToOADateTime ( سيتم الحديث عنه لاحقاً) الذي ينتج قيمة هي عبارة عن تاريخ متوافق مع OLE Automation.
خصائص الفئة DateTime
1.خاصية Date
تنتج خاصية Date التاريخ من قيمة تاريخ /وقت. وتصبط الوقت على منتصف الليل
Dim date1 As DateTime
date1 = Now()
Date_txt.Text = date1.Date

2.خاصيتا DayofWeek و DayofYear
تنتج هاتان الخاصيتان أحد أيام الأسبوع ويشار إلية برقم يتراوح بين 1و7 ورقم هذا اليوم بالنسبة للعام ويشار إلية برقم يتراوح بين 1و365 او366 للسنوات الكبيسة .
dayofyear_txt.Text = date1.DayOfWeek
dayofweek_txt.Text = date1.DayOfYear

3.خصائص Millisecond و Second و Minute و Hour
تنتج هذه الخصائص جزء الوقت المقابل في قيمة التاريخ التي تم تمريرها كوسيط .
millisecond_txt.Text = Date.Now.Millisecond
second_txt.Text = Date.Now.Second
Minute_txt.Text = Date.Now.Minute
hour_txt.Text = Date.Now.Hour
4.خصائص Day وMonth و Year
تنتج هذه الخصائص الثلاث اليوم والشهر والعام للقيمة DateTime . وتتخذ خاصيتا Day وMonth قيما رقمية ويمكن تحويلها إلى سلسة الأحرف الملائمة ( اسم اليوم والشهر ) باستخدام دالتي WeekDayName() و . MonthName()
year_txt.Text = Date.Now.Year
Month_txt.Text = Date.Now.Month & " // " & MonthName(Now.Month)
day_txt.Text = Date.Now.Day & " // " & WeekdayName(Now.Day)
وتقبل الدالتان كلتاهما رقم اليوم ( من 1 إلى 7 ) ورقم الشهر ( من 1 إلى 12) كوسيط وتنتج الاسم . ويمكن استخدام القيمة 13 مع التقويم الذي يحتوى ثلاثة عشر شهر .
كما تقبل هاتان الدالتان وسيطاً اختياريا ثالثا وهو القيمة True & False وتوضحان ما إذا كانت الدالة ينبغي أن تنتج الاسم المختصر True أو الاسم الكامل False.
الدالة WeekDayName() وسيطاً اختيارياً ثالثاً وهو الذي يحدد اليوم الأول من الأسبوع . قم بضبط هذا الوسيط على احد عناصر ترقيم FirstDayOfWeek
Month_txt.Text = Date.Now.Month & " // " & MonthName(Now.Month, True)
day_txt.Text = Date.Now.Day & " // " & WeekdayName(Now.Day,_ FirstDayOfWeek.Saturday)

..... يتبع .....
}}}
تم الشكر بواسطة:
#2
تابع خصائص الفئة DateTime
5.خاصية Ticks
وهي تنتج عدد اللحظات من قيمة تاريخ او وقت وتساوي كل لحظة 100 نانوثانيه . ولتحويل عدد محدد من اللحظات إلى ما يقابلها بالملي ثانية اضرب هذا العدد في 10.000 او استخدم الخاصية TickPerMillisecond الخاصة بالكائن TimeSpan والتي سنتناولها لاحقاً.
Ticks_txt.Text = (Date.Now.Ticks)
6.خاصية TimeOfDay
تنتج هذه الخاصية الوقت من قيمة تاريخ أو وقت .
timeofday_txt.Text = Now().TimeOfDay.ToString
أساليب الفئة DateTime
1.أسلوب Compare
وهو من الأساليب المشتركة التي تقارن بين قيمتي تاريخ او وقت وتنتج قيمة على شكل عدد صحيح توضح الترتيب النسبي لهاتين القيمتين
Dim date1 As DateTime
Dim date2 As DateTime
date1 = Now()
date2 = date2_txt.Text
result_txt.Text = System.DateTime.Compare(date1, date2)
ينتج هذا الاسلوب عدد صحيحا يكون عبارة عن( -1 ) اذا كان date1 اقل من Date2 . وينتج القيمة( 0) اذا كانت القيمتان متساويتان
و ينتج القيمة (1 ) اذا كانت date1 اكبر من .Date2
2.اسلوب DaysInMonth
وهو ينتج عدد الأيام في شهر محدد ويقبل كلاً من الشهر والعام كوسائط
daysinmonyh_txt.Text = " عدد ايام شهر فبراير لعام 2009 هو " _
& System.DateTime.DaysInMonth(2009, 2)
3.اسلوب FromOADate
وهو يقوم بانشاء قيمة تاريخ /وقت من نوع OLE Automation ويجب أن يكون الوسيط dtvalue عبارة عن قيمة من نوع Double تتراوح مابين -657.434 وهو اليوم الأول من عام 100 و 2.958.465 وهو اليوم الأخير من عام 9999 .
fromoadate_txt.Text = System.DateTime.FromOADate(dtvalue)
اسلوب IsleapYear
ينتج هذا الاسلوب القيمة True & False التي توضح ما اذا كان العام المحدد هو عام كبيس ام لا.
Dim leapyear As Boolean
leapyear = System.DateTime.IsLeapYear(leapyear_txt.Text)
isleap_txt.Text = leapyear
اسلوبا Add و Subtract
سنتناولهما بالتفصيل عندما نتناول الفئة TimeSpan .

---- يتبع -----
}}}
تم الشكر بواسطة:
#3
إضافة فترات زمنية فاصلة للتواريخ :هناك العديد من الاساليب التي تضيف فترات زمنية فاصلة محددة الي قيمة تاريخ أو وقت ويقبل كل اسلوب عدد الفترات الزمنية الفاصلة من أيام وساعات وماالى ذلك .. التي ستتم اضافتها الى النسخة الحالية من فئة DateTime . ونذكر فيما يلي هذة الاساليب :
اسلوب AddYears
اسلوب سAddMonth
اسلوب AddDays
اسلوب AddHours
اسلوب AddMinuts
اسلوب AddSeconds
اسلوب AddMilliseconds
اسلوب AddTicks
مثال
Dim addate As Date
addate = Now()
addate = addate.AddYears(1)
add_txt.Text = " اضافة سنة لللتاريخ الحالي = " & addate
ملاحظة : اذا كان الوسيط عبارة عن قيمة سالبة يتم طرح الفترات الزمنية المقابلة من النسخة الحالية من الفئة . وتقوم العبارة التالية بطرح دقيقتين من متغير من نوع Date
Addate=addate.AddMinutes(-2)
أساليب تحويل التاريخ1.أسلوب ToFileTime
يقوم هذا الاسلوب بتحويل قيمة القئة Date الى التنسيق الخاص بالوقت المحلي لملفات النظام وهناك أيضاً اسلوب مكافئ وهو اسلوب FromFileTime الذي يقوم بتحويل القيمة الخاصة بوقت الملف الى قيمة من نوع Date .
Label32.Text = Date.Now.ToFileTime
2.اسلوب ToLocalTime
يقوم هذا الاسلوب بتحويل قيمة الوقت تبعاً لنظام التوقيت الدولي UTC الى التوقيت المحلي .
Label33.Text = Date.Now.ToLocalTime
3.أسلوباToShortDateString & ToLongDateString
يقومان هذا الاسلوبان بتحويل الجزء الخاص بالتاريخ الى سلسة أحرف لها تنسيق التاريخ المفصل أو المختصر .
Label37.Text = Date.Now.ToLongDateString
Label35.Text = Date.Now.ToShortDateString
4.أسلوباToShortTimeString & ToLongTimeString
يقومان هذان الاسلوبان بتحويل الجزء الخاص بالوقت الى سلسلة الأحرف لها تنسيق الوقت المفصل أو المختصر.
Label45.Text = Date.Now.ToLongTimeString
Label43.Text = Date.Now.ToShortTimeString
5.اسلوب ToOADate
يقوم هذا الاسلوب بتحويل النسخة الحالية من الفئة DateTime الى تاريخ متوافق مع OLE Automation.
Label41.Text = Date.Now.ToOADate
6.اسلوب ToUniversalTime
يقوم هذا الاسلوب بتحويل بتحويل النسخة الحالية من الفئة DateTime الى النظام التوقيت الدولي .
Label39.Text = Date.Now.ToUniversalTime
---- يتبع ----
}}}
تم الشكر بواسطة:
#4
فئة TimeSpan
الفئة TimeSpan تمثل فترة زمنية فاصلة ويمكنك التعبير عنها باستخدام العديد من الوحدات المختلفة .سواءً كانت لحظات أو ملي ثانية أو حتى أيام . وعادة ما تمثل هذة الفئة الفرق بين قيمتي تاريخ ووقت . بيد انة يمكنك ايضاً انشاء فئة TimeSpan لفترة فاصلة محدة لتستخدمها في ماتقوم به من عمليات حسابية .
إذا كنت تريد استخدام المتغير الخاص بالفئة TimeSpan في الكود الذي تنشئة فقم بتعريفة باستخدام عبارة كالعبارة التالية
Dim TS as New TimeSpan
وإذا كنت تريد تعيين قيمة مبدئية للكائن TimeSpan يمكنك ان تضيف عدد الايام والساعات والدقائق والثواني وعدد الملي ثانية التي تتألف منها الفترة الزمنية الفاصلة . كالاتي

Dim TS as TimeSpan = New TimeSpan(9,12,1,59)
في العبارة السابقة قمنا بتعيين قيمة مبدئية للكائن TimeSpan بحيث تكون الفترة الزمنية لة هي 9 أيام و 12ساعة ودقيقة واحدة و 59ثانية .

خصائص الفئة TimeSpanيوفر نوع الفئة TimeSpan الخصائص الموضحة أدناة وتدخل أغلب هذة الخصائص في نطاق الخصائص المشتركة .
Empty كائن TimeSpan خالي
MaxValue أكبر فترة فاصلة يمكن تمثيلها باستخدام الكائن TimeSpan
MinValue أصغر فترة فاصلة يمكن تمثيلها باستخدام الكائن TimeSpan
TicksPerDay عدد اللحظات في اليوم
TicksPerHour عدد اللحظات في الساعة
TicksPerMilliSecond عدد اللحظات في الملي ثانية
TicksPerMinute عدد اللحظات في الدقيقة الواحدة
TicksPerSecond عدد اللحظات في الثانية الواحدة
Zero ضبط الفترة الزمنية لكائن TimeSpanعلى القيمة 0
خصائص الفترات الزمنية .
Days العدد الاجمالي للأيام في قيمة TimeSpan الحالية
Hours العدد الاجمالي للساعات في قيمة TimeSpan الحالية
Milliseconds العدد الاجمالي للملي ثانية في قيمة TimeSpan الحالية حيث أن أكبر قيمة لهذة الخاصية هي 999
Minutes العدد الاجمالي للدقائق في قيمة TimeSpan الحالية حيث أن أكبر قيمة لهذة الخاصية هي 59
Seconds العدد الاجمالي للثواني في قيمة TimeSpan الحالية حيث أن أكبر قيمة لهذة الخاصية هي 59
Ticks العدد الاجمالي للحظات في قيمة TimeSpan الحالية
اجمالي عدد الفترات الزمنية الفاصلة الخاصة بقيمة TimeSpan
TotalDays اجمالي عدد الأيام في قيمة TimeSpan الحالية
TotalHours اجمالي عدد الساعات في قيمة TimeSpan الحالية
Milliseconds اجمالي عدد الثواني في قيمة TimeSpan الحالية
TotalMinutes اجمالي عدد الدقائق في قيمة TimeSpan الحالية
TotalSeconds اجمالي عدد الثواني في قيمة TimeSpan الحالية
---- يتبع ---
}}}
تم الشكر بواسطة:
#5
خاصية Durationتنتج هذة الخاصية المدة الزمنية للنسخة الحالية من الفئة TimeSpan حيث يتم التعبير عن هذة المدة بعدد الأيام متبوعا بعدد الساعات والدقائق والثواني والمليثانية.
TextBox17.Text = ts.Duration.ToString
الأساليب الخاصة بالفترات الزمنية الفاصلة
تقوم الاساليب الموضحة أدناة بانشاء كائن TimeSpa جديد لة مدة زمنية محددة ويتم تحديد كل مدة زمنية كعدد من الفترات الفاصلة يتم تقريبها الى أقرب مليثانية .
تقبل الاساليب جميعها وسيطا واحدا عبارة عن قيمة من نوع Double .
FromDays عدد الأيام التي يحددها الوسيط
FromHours عدد الساعات يحددها الوسيط
FromMilliseconds عدد الثواني يحددها الوسيط
FromMinutes عدد الدقائق يحددها الوسيط
FromSeconds عدد الثواني يحددها الوسيط
أمثلة
Dim tsp As TimeSpan
tsp = tsp.Add(System.TimeSpan.FromDays(2))
TextBox21.Text = tsp.ToString
tsp = tsp.Add(System.TimeSpan.FromHours(10))
TextBox20.Text = tsp.ToString
tsp = tsp.Add(System.TimeSpan.FromMinutes(30))
TextBox19.Text = tsp.ToString
tsp = tsp.Add(System.TimeSpan.FromSeconds(500))
TextBox18.Text = tsp.ToString

أسلوب Parse(String)يقوم هذا الاسلوب بانشاء كائن TimeSpan جديد من سلسلة أحرف تستخدم تنسيق TimeSpan وهو عبارة عن الأيام متبوعة بنقطة ثم الساعات والدقائق والثواني ويتم الفصل بينهما باستخدام النقطتين المتوازيتين .
Dim sp As TimeSpan
sp = TimeSpan.Parse("3.12:20:30.500")
TextBox27.Text = sp.ToString
أسلوب Addيقوم هذا الاسلوب باضافة كائن TimeSpan الى النسخة الحالية من الفئة .
Dim ts1, ts3, sp As TimeSpan
ts1 = ts1.Add(System.TimeSpan.FromDays(10))
ts3 = ts1.Add(tsp)
TextBox26.Text = ts3.ToString
أسلوب Subtractيقوم هذا الأسلوب بطرح كائن TimeSpan من النسخة الحالية من الفئة .
Dim ts1, ts4, tsp As TimeSpan
ts4 = ts1.Subtract(tsp)
TextBox25.Text = ts4.ToString
أسلوب CompareToيقارن هذا الأسلوب النسخة الحالية من الكائن TimeSpan بكائن TimeSpan آخر .
Dim ts1, tsp As TimeSpan
TextBox24.Text = ts1.CompareTo(tsp)
ينتج الأسلوب CompareTo القيمة (0) اذا كان الكائنان متساويان والقيمة (-1) إذا كانت النسخة الحالية أطول والقيمة (1) إذا كان الكائن TimeSpan الذي تم تمريره كوسيط أطول.
أسلوب Equalsينتج هذا الأسلوب القيمة True & False التي توضح ما إذا كان اثنان من كائنات TimeSpan تمثلان الفترة الزمنية نفسها.
Dim ts1, tsp As TimeSpan
TextBox23.Text = ts1.Equals(tsp)
أسلوب Negateيقوم هذا الأسلوب بوضع قيمة سالبة للنسخة الحالية من الكائن TimeSpan . حيث يصبح الكائن TimeSpan ذو القيمة الموجبة ( التي تعرض تاريخا مستقبليا عند اضافتة للتاريخ الحالي ) كائنا ذو قيمة سالبة ( تعرض تاريخا قديما عند إضافته إلى التاريخ الحالي .
Dim sp As TimeSpan
TextBox22.Text = sp.Negate.ToString
}}}
تم الشكر بواسطة:
#6
تم بحمد الله
لتحميل الموضوع على هيئة PDF+ مثال Visual studio2008
}}}
تم الشكر بواسطة:



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


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