بشكل عام، هناك العديد من هياكل البيانات المستخدمة لوصف الوقت في دلفي، وتشغيل الوقت هو في الأساس تشغيل هذه الهياكل.
نوع التاريخ والوقت:
نوع البيانات الأكثر استخدامًا والذي يمثل التاريخ والوقت في دلفي هو نوع TDateTime، تمامًا مثل العدد الصحيح العادي، يمكنك تحديد متغير تاريخ للتاريخ المطلوب تشغيله في البرنامج. نوع TdateTime هو في الأساس رقم من النوع المزدوج. يتم تعريف نوع TdateTime في دلفي على النحو التالي: اكتب TDateTime = اكتب مزدوج. الخوارزمية المحددة هي استخدام الجزء الصحيح من الرقم المزدوج لتمثيل التاريخ، مع 30 ديسمبر 1989. نقطة الأساس. الجمع والطرح بالأيام، على سبيل المثال، الرقم 1 يمثل 1 يناير 1900، والرقم -1 يمثل 29 ديسمبر 1989. يُستخدم الجزء العشري للتعبير عن الوقت، وقيمته هي نسبة الوقت المراد التعبير عنه إلى الوقت الإجمالي لليوم بأكمله، على سبيل المثال، الساعة 6 صباحًا هي 6/24=0.25، و6: الساعة 15 صباحًا هي (6*60+15)/ (24*60)=0.26041666666666666666667 وفيما يلي عدة أمثلة لتوضيح التفاعل بين نوع TDateTime والنوع المزدوج.
0 12/30/1899 00:00:00
2.75 1/1/1900 18:00:00
-1.25 29/12/1899 6:00:00
35065 1/1/1996 00:00:00
أعتقد أنه يمكن للجميع فهم طريقة التحويل بين TdateTime وDouble، وبالتالي فإن تشغيل TDateTime هو في الأساس نفس تشغيل Double.
نوع تيتايمستامب:
هذا هو نوع البنية المستخدم لوصف التاريخ والوقت ويتم تعريفه في دلفي على النحو التالي:
اكتب TTimeStamp = سجل الوقت: عدد صحيح {عدد المللي ثانية من 0:00 منتصف الليل إلى الوقت المحدد} التاريخ: عدد صحيح {عدد الأيام من اليوم إلى التاريخ المحدد}؛
بالمقارنة مع TDateTime، يمكنه التعبير عن الوقت عالي الدقة بشكل أكثر سهولة، ويستخدم بشكل عام للعمليات على مستوى المللي ثانية وللتعبير عن الأوقات الأطول.
نوع نظام الوقت:
بنية المؤشر المستخدمة لعمليات الوقت في WinApi. تعريفه هو:
اكتب PSystemTime = ^ TSystemTime = wYear: Word؛ wDayOfWeek: Word؛ wHour: Word؛
يتم استخدام هذه البنية في الغالب عند استدعاء عمليات WinApi.
بعد فهم جوهر أنواع الوقت المختلفة، أعتقد أن كل شخص لديه مجموعة من الأفكار للتعامل مع هذه الأنواع من الوقت، ومع ذلك، توفر دلفي أيضًا مجموعة كاملة من وظائف المعالجة لمعالجة الوقت الوحدة، سأقدم لك الآن الوظائف ذات الصلة في دلفي:
وظائف التلاعب بالوقت
وظيفة التاريخ:
التعريف: التاريخ: TDateTime؛
الوظيفة: إرجاع التاريخ الحالي
مثال:
التاريخ الحالي := التاريخ؛
وظيفة داي أوف ويك:
التعريف: الدالة DayOfWeek(التاريخ: TDateTime): عدد صحيح؛
الوظيفة: احصل على قيمة يوم الأسبوع للتاريخ المحدد وقم بإرجاع 1 إلى 7، مما يمثل الأحد إلى السبت.
وظيفة IncMouth:
التعريف: الدالة IncMonth(const Date: TDateTime; NumberOfMonths: Integer): TDateTime;
الوظيفة: ابحث عن بيانات التاريخ المحدد بعد أشهر NumberOfMonths.
مثال:
Date1 := IncMonth(date,10);
إذا كان اليوم هو 3-5-2002، فإن التاريخ 1 هو 3-3-2003
وظيفة IsLeapYear:
التعريف: الدالة IsLeapYear(Year: Word): Boolean;
الوظيفة: تحديد ما إذا كانت السنة المحددة سنة كبيسة؛
مثال:
إذا كان isLeapYear(2000) ثم ShowMessage('هذه السنة سنة كبيسة');
وظيفة الآن:
التعريف: الوظيفة الآن: TDateTime؛
الوظيفة: تستخدم للحصول على التاريخ والوقت الحاليين
مثال:
CurrentDateTime := الآن؛
إجراء استبدال التاريخ
التعريف: الإجراء ReplaceDate(var DateTime: TDateTime; const NewDate: TDateTime);
الوظيفة: استخدم جزء التاريخ من المعلمة Newdate لاستبدال جزء التاريخ من المعلمة DateTime، لكن لا تغير جزء الوقت.
إجراء استبدال التاريخ
التعريف: الإجراء ReplaceTime(var DateTime: TDateTime; const NewTime: TDateTime);
الوظيفة: استخدم الجزء الزمني من المعلمة Newdate لاستبدال الجزء الزمني من المعلمة DateTime، لكن لا تغير جزء التاريخ.
إذا تم استخدام العمليتين المذكورتين أعلاه معًا، فهذا يعادل التعيين.
وظيفة الوقت:
التعريف: وظيفة الوقت: TDateTime؛
الوظيفة: إرجاع الوقت الحالي
مثال:
الوقت الحالي := الوقت؛
وظائف التحويل بين أنواع زمنية مختلفة
وظيفة DateTimeToFileDate:
التعريف: DateTimeToFileDate(DateTime: TDateTime): عدد صحيح؛
الوظيفة: تحويل وقت من النوع TDateTime إلى وقت في بيئة Dos تختلف طريقة الوصول إلى الوقت في بيئة Dos عن نوع TdateTime في VCL. عند إجراء عمليات الملف، من أجل الحفاظ على تناسق الوقت، تحتاج إلى استخدام وظيفة DateTimeToFileDate بعد التحويل، تكون قيمة العدد الصحيح التي تم إرجاعها هي القيمة المستخدمة لوصف الوقت ضمن Dos.
إجراء DateTimeToSystemTime:
التعريف: الإجراء DateTimeToSystemTime(DateTime: TDateTime; var SystemTime: TSystemTime);
الوظيفة: تحويل وقت نوع TDateTime إلى نوع TSystemTime الذي تستخدمه وظيفة Win API، والذي يُستخدم عند استخدام وظيفة WinApi لمعالجة الوقت.
الدالة SystemTimeToDateTime:
التعريف: الدالة SystemTimeToDateTime(const SystemTime: TSystemTime): TDateTime;
الوظيفة: تحويل رقم نوع TSysTemTime الذي تم الحصول عليه في الدالة WinApi إلى نوع TDateTime.
وظيفة DateTimeToTimeStamp:
وظيفة TimeStampToDateTime:
التعريف: DateTimeToTimeStamp (DateTime: TDateTime): TTimeStamp؛
وظيفة TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime;
الوظيفة: تستخدم للتحويل بين نوع TDataTime وTTimeStamp. يستخدم TDataTime رقمًا مزدوجًا لوصف الوقت، بينما يستخدم TTimeStamp عددين صحيحين لوصف الوقت على التوالي. يمكن العثور على الفرق بين النوعين في قسم وصف نوع البيانات في بداية المقالة.
وظيفة تاريخ الترميز:
التعريف: الدالة EncodeDate(Year, Month, Day: Word): TDateTime;
الوظيفة: أدخل قيم السنة والشهر واليوم، وقم بإرجاع التاريخ كنوع TDateTime. نطاق السنة هو 1-9999، ونطاق الشهر هو 1-12، ويستند نطاق التاريخ إلى الشهر الحالي في هذه الحالة، إذا كانت القيمة المدخلة خارج النطاق، فسيتم إنشاء خطأ EConvertError.
عملية فك التشفير:
التعريف: إجراء DecodeDate(التاريخ: TDateTime; var Year, Month, Day: Word);
الوظيفة: أدخل تاريخًا من النوع TDateTime وقم بتحويله إلى قيمة سنة وشهر ويوم. إذا كانت قيمة الإدخال 0 أو أقل من 0، فإن السنة والشهر واليوم كلها 0،
وظيفة ترميز الوقت:
التعريف: EncodeTime(ساعة، دقيقة، ثانية، ماجستير: Word): TDateTime؛
الوظيفة: أدخل قيمة الساعة (Hour)، والدقيقة (min)، والثانية (Sec)، والميكرو ثانية (MSec)، وقم بإرجاع وقت من النوع TDateTime، وهو رقم عشري بين 0 و1. نطاق قيمة الساعة هو 0-23، ونطاق قيمة Min هو 0-59، ونطاق قيمة Sec هو 0-59، ونطاق قيمة MSec هو 0-999 تم إنشاء خطأ EConvertError.
عملية فك التشفير:
التعريف: الإجراء DecodeTime (الوقت: TDateTime؛ var Hour، Min، Sec، MSec: Word)؛
الوظيفة: أدخل الوقت وقم بتحويله إلى ساعات ودقائق وثواني وميكروثانية (MSec).
وظيفة تحويل نوع TDateTime ونوع السلسلة:
الدالة DateTimeToStr:
الدالة DateToStr
الدالة تيميتوستر
التعريف: الدالة DateTimeToStr(DateTime: TDateTime): سلسلة؛
وظيفة TimeToStr(Time: TDateTime): سلسلة؛
وظيفة TimeToStr(Time: TDateTime): سلسلة؛
الوظيفة: تحويل رقم نوع TDateTime إلى سلسلة، وDateTimeToStr يحول التاريخ والوقت، وDateToStr يحول التاريخ فقط، وTimeToStr يحول الوقت فقط. تأثير الإخراج المحول هو YYYY-MD H:M:S
الدالة سترتوداتيتيمي
وظيفة سترتودات
وظيفة سترتوتيمي
التعريف: الدالة StrToDateTime(const S: string): TDateTime;
الدالة StrToDate(const S: string): TDateTime;
الدالة StrToTime(const S: string): TDateTime;
الوظيفة: تحويل سلسلة بتنسيق التاريخ والوقت إلى TDateTime، حيث يجب أن تكون S سلسلة صالحة، مثل
YY-MM-DD HH:MM:SS، وإلا سيتم تشغيل الحدث EConvertError وستظهر رسالة خطأ.
يجب أن تتكون سلسلة الجزء الزمني من 2 إلى 3 سلاسل رقمية، ومفصولة بأحرف محددة تم تعيينها في الإعدادات الإقليمية لنظام التشغيل Windows. يجب أن تتوافق متطلبات التنسيق مع الإعدادات الموجودة في الإعدادات الإقليمية لنظام التشغيل Windows، حيث HH، MM (ساعة، دقيقة) يجب إضافتها، SS (الثانية) اختيارية، يمكنك أيضًا إضافة صباحًا ومساءً في النهاية للتمييز بين الصباح وبعد الظهر. في هذا الوقت، سيعتقد النظام أنه تم استخدام التمثيل لمدة 12 ساعة، وإلا فسيكون كذلك يعتبر أنه يتم استخدام التمثيل على مدار 24 ساعة.
يجب أن يتوافق تنسيق جزء التاريخ مع تنسيق التاريخ القصير في إعدادات Windows الإقليمية، والذي يتكون أيضًا من 2 إلى 3 سلاسل رقمية. إذا كان هناك رقمان فقط في السلسلة، فيُعتبر الشهر والتاريخ المحدد، والسنة هي السنة الحالية.
إذا كانت اللغة تستخدم تمثيلاً للسنة مكونًا من رقمين، فسيتعامل معها النظام على النحو التالي:
بالنسبة للقيمة الأساسية لسنة البداية للعام الحالي، أدخل السنة 03. أدخل السنة 50. أدخل السنة 68.
1998 0 1900 1903 1950 1968
2002 0 2000 2003 2050 2068
1998 50 1948 2003 1950 1968
2000 50 1950 2003 1950 1968
2002 50 1952 2003 2050 1968
2020 50 1970 2003 2050 2068
2020 10 2010 2103 2050 2068
أولاً، احصل على سنة البداية للسنة المكونة من رقمين في الإعدادات الإقليمية على سبيل المثال، إذا تم تعيين نطاق السنة المكون من رقمين على 1932-2031 في الإعدادات الإقليمية، فإن سنة البداية هي 32 عامًا 0، يعتبر رقمين يمثل هذا القرن. إذا كانت السنة أكبر من 0، يتم استخدام قيمة السنة الحالية ناقص سنة البداية وتسمى هذه القيمة بالقيمة الأساسية من أو يساوي هذه القيمة يعتبر هذا القرن، وإلا يعتبر القرن القادم. وفيما يلي بعض الأمثلة:
إجراء DateTimeToString:
وظيفة فورماتاتيتيمي:
التعريف: الإجراء DateTimeToString (نتيجة var: سلسلة؛ تنسيق const: سلسلة؛ DateTime: TDateTime)؛
الدالة FormatDateTime(تنسيق const: سلسلة; DateTime: TDateTime): سلسلة;
الوظيفة: احصل على السلسلة الزمنية المراد إخراجها عن طريق تحديد التنسيق في سلسلة التنسيق، على سبيل المثال، إذا كنت تريد إخراج "اليوم هو الجمعة، 5 مايو 2002"، فيمكنك استخدام هاتين الطريقتين لهما نفس الشيء يتم الحصول على سلسلة الإخراج من خلال المتغيرات المشتركة والقيمة الأخرى هي الحصول على سلسلة الإخراج من خلال قيمة الإرجاع العلم وسلسلة إضافية. السلسلة الإضافية محاطة بـ ""، تمامًا مثل الدالة Printf في C. على سبيل المثال، قيمة التنسيق "اليوم هو الجمعة، 5 مايو 2002" هي "" اليوم هو "yyyy" سنة "mm" شهر "dd" day "، dddd'، yyyy، mm، dd، dddd كلها معرفات تنسيق. توضيحات معرفات التنسيق المختلفة هي كما يلي:
د: استخدم عددًا صحيحًا واحدًا أو عددين لعرض اليوم (1-31)
dd: استخدم عددين صحيحين لعرض اليوم، واستخدم 0 لتعويض أقل من رقمين (01-31)
ddd: عرض رقم الأسبوع الحالي في شكل مختصر إذا كان Windows إصدارًا باللغة الإنجليزية، فسيتم عرضه كـ Mon-Sun وإذا كان إصدارًا صينيًا، فسيتم عرضه كـ dddd.
dddd: عرض رقم الأسبوع الحالي بالتنسيق الكامل إذا كان Windows إصدارًا باللغة الإنجليزية، فسيتم عرض Monday-SumDay إذا كان إصدارًا صينيًا، فسيتم عرض Monday-Sunday.
ddddd : الإخراج بتنسيق التاريخ القصير باللغة المحلية.
dddddd : الإخراج بتنسيق التاريخ الطويل باللغة المحلية.
م: استخدم عددًا صحيحًا واحدًا أو عددين لعرض الشهر (1-12)
مم: استخدم عددين صحيحين لعرض الشهر إذا كان هناك أقل من رقمين، استخدم 0 لتعويض (01-12).
mmm: استخدم الاختصار لعرض اسم الشهر. يتم عرض النسخة الإنجليزية كـ Jan-Dec، والنسخة الصينية هي نفسها mmmm.
mmmm: استخدم الطريقة الكاملة لعرض اسم الشهر. يعرض الإصدار الإنجليزي الفترة من يناير إلى ديسمبر، ويعرض الإصدار الصيني من يناير إلى ديسمبر.
yy: عرض السنة كعدد صحيح مكون من رقمين (00-99)
yyyy: عرض السنة كعدد صحيح مكون من أربعة أرقام (0000-9999)
h: استخدم عددًا صحيحًا واحدًا أو عددين لعرض الساعة (0-23)
hh: استخدم عددين صحيحين لعرض الساعة إذا كان هناك أقل من رقمين، استخدم 0 لتعويض (00-23).
n: استخدم عددًا صحيحًا واحدًا أو عددين لعرض الدقائق (0-60)
nn: استخدم عددين صحيحين لعرض الدقائق، واستخدم 0 لتعويض أقل من رقمين (00-60)
s: استخدم عددًا صحيحًا واحدًا أو عددين لعرض الثواني (0-60)
ss: استخدم عددين صحيحين لعرض الثواني، واستخدم 0 لتعويض أقل من رقمين (00-60)
z: عرض المللي ثانية بعدد صحيح واحد أو اثنين (0-999)
zzz: استخدم الأعداد الصحيحة المكونة من ثلاثة أرقام لعرض المللي ثانية. إذا كان هناك أقل من ثلاثة أرقام، استخدم 0 لتعويض (000-999).
tt : يعرض التاريخ بالتنسيق المحلي
صباحًا/مساءً: يستخدم لعرض 12 ساعة، حيث يمثل AM من الساعة 0 إلى الساعة 12، ويمثل مساء من الساعة 12 إلى الساعة 0.
المتغيرات المرتبطة بالوقت:
تقوم دلفي بتغليف معلومات متنوعة حول الإعدادات المحلية وتعريف سلسلة من المتغيرات، وإليك بعض المتغيرات المتعلقة بالوقت:
فاصل التاريخ: شار
فاصل التاريخ، يستخدم لفصل السنة والشهر واليوم
فاصل الوقت: شار
فاصل الوقت يستخدم لفصل الساعات والدقائق والثواني
تنسيق التاريخ القصير: سلسلة
تعريف تنسيق التاريخ القصير في اللغة.
تنسيق تاريخ طويل: سلسلة
تعريف تنسيق التاريخ الطويل في اللغة.
تنسيق وقت قصير: سلسلة
تعريف تنسيق الوقت القصير في اللغة.
تنسيق وقت طويل: سلسلة
تعريف التنسيق الطويل في اللغة.
TimeAMString: سلسلة
سلسلة تستخدم لتمثيل الصباح
TimePMString: سلسلة
سلسلة تستخدم لتمثيل فترة ما بعد الظهر
ShortMonthNames: صفيف [1..12] من السلسلة؛
المصفوفة المستخدمة لاختصار اسم الشهر هي السلسلة المحددة بواسطة mmm والتي يتم عرضها عند استخدام FormatDateTime.
LongMonthNames: صفيف [1..12] من السلسلة؛
المصفوفة المستخدمة لتمثيل اسم الشهر بالكامل هي السلسلة المحددة بواسطة mmmm المعروضة عند استخدام FormatDateTime.
ShortDayNames: صفيف [1..7] من السلسلة؛
المصفوفة المستخدمة لاختصار اسم يوم الأسبوع هي السلسلة المحددة بواسطة ddd المعروضة عند استخدام FormatDateTime.
LongDayNames: صفيف [1..7] من السلسلة؛
المصفوفة المستخدمة لتمثيل اسم الأسبوع بشكل كامل هي السلسلة المحددة بواسطة ddd والتي يتم عرضها عند استخدام FormatDateTime
TwoDigitYearCenturyWindow:Word = 50;
سنة البداية عند استخدام السنوات المكونة من رقمين.
حسنًا، لقد تم الآن الانتهاء من الجزء المتعلق بعمليات الوقت في دلفي بشكل أساسي. ويمكن للقراء أيضًا التحقق من ملفات المساعدة المقابلة لحل المشكلات التي يواجهونها وفقًا لاحتياجاتهم الخاصة عند استخدام البرمجة الفعلية.