نقدم لك في هذا الفصل معالجة الوقت والتاريخ بلغة Perl.
هناك عدة وظائف للتعامل مع الوقت في لغة Perl:
1. دالة time(): تُرجع عدد الثواني المتراكمة منذ 1 يناير 1970
2. وظيفة localtime(): احصل على توقيت المنطقة الزمنية المحلية
3. وظيفة gmtime(): احصل على توقيت غرينتش
بعد ذلك، دعونا نلقي نظرة على الدالة localtime() ، التي تُرجع الوقت والتاريخ الحاليين بدون وسيطات.
تمثل الرموز التسعة التالية معلمات مختلفة للوقت والتاريخ:
ثانية، # ثانية، 0 إلى 61 دقيقة، # دقيقة، 0 إلى 59 ساعة، # ساعة، 0 إلى 24 دقيقة، # أيام، 1 إلى 31 شهر، # أشهر، 0 إلى 11 سنة، # سنة، بدءًا من 1900 يوم، # يوم من الأسبوع , 0 -6,0 يعني يوم الأحد، # اليوم من السنة، 0-364,365isdst # صحيح إذا كان التوقيت الصيفي ساري المفعول
مثال التوضيحي هو كما يلي:
مخرجات تنفيذ المثال أعلاه هي:
الأحد 12 يونيو
إذا تم استدعاء localtime() مباشرة، فإنه يقوم بإرجاع وقت إعداد المنطقة الزمنية الحالية للنظام، والمثال كما يلي:
مخرجات تنفيذ المثال أعلاه هي:
الوقت والتاريخ: الأحد 12 يونيو 11:27:31 2016
الدالة gmtime() تشبه الدالة localtime()، ولكنها ترجع توقيت غرينتش القياسي.
مخرجات تنفيذ المثال أعلاه هي:
التوقيت المحلي والتاريخ هو: الأحد 12 يونيو 11:32:14 2016GMT الوقت والتاريخ هو: الأحد 12 يونيو 03:32:14 2016
يمكننا أن نرى من المثال أن الوقت في الصين يختلف بمقدار 8 ساعات عن توقيت غرينتش.
يمكننا استخدام العناصر الزمنية التسعة للدالة localtime() لإخراج وقت التنسيق الذي يجب صياغته. يستخدم الإخراج المنسق الدالة printf() :
مخرجات تنفيذ المثال أعلاه هي:
وقت التنسيق: HH:MM:SS11:35:23
يمكننا الحصول على وقت العصر باستخدام الدالة time()، التي تُرجع عدد الثواني منذ 1 يناير 1970. الأمثلة هي كما يلي:
مخرجات تنفيذ المثال أعلاه هي:
عدد الثواني المتراكمة منذ 1 يناير 1970 هو: 1465702883
يمكننا إخراج تنسيق الوقت الذي نريده:
مخرجات تنفيذ المثال أعلاه هي:
الوقت والتاريخ الحالي: 2017-3-15 12:47:54 وقت وتاريخ الأمس: 2017-3-14 12:47:54
يمكن للوظيفة strftime() تنسيق الوقت بالتنسيق الذي نريده.
يسرد الجدول التالي بعض رموز التنسيق يشير الرمز * إلى أنك تريد الاعتماد على التوقيت المحلي:
رمز | يصف | مثال |
---|---|---|
%a | اختصار يوم الأسبوع (الأحد..السبت) * | Thu |
%A | الاسم الكامل ليوم الأسبوع (الأحد..السبت) * | Thursday |
%b | اختصار الشهر (يناير..ديسمبر) * | Aug |
%B | اسم الشهر كاملا (يناير..ديسمبر) * | August |
%c | التاريخ والوقت* | Thu Aug 23 14:55:02 2001 |
%C | يتم تقسيم السنة على 100 وتقريبها ( 00-99 ) | 20 |
%d | اليوم من الشهر ( 01-31 ) | 23 |
%D | التاريخ، MM/DD/YY يساوي %m/%d/%y | 08/23/01 |
%e | اليوم من الشهر، باستخدام المسافات لملء الأرقام الفردية ( 1-31 ) | 23 |
%F | اختصار YYYY-MM-DD يشبه %Y-%m-%d | 2001-08-23 |
%g | آخر رقمين من السنة ( 00-99 ) | 01 |
%g | سنة | 2001 |
%h | اختصار الشهر* (نفس خيار %b ) | Aug |
%H | تنسيق 24 ساعة ( 00-23 ) | 14 |
%I | تنسيق 12 ساعة ( 01-12 ) | 02 |
%j | يوم من السنة ( 001-366 ) | 235 |
%m | الشهر( 01-12 ) | 08 |
%M | الدقائق ( 00-59 ) | 55 |
%n | سطر جديد ( 'n' ) |
|
%p | عرض صباحًا أو مساءً | PM |
%r | الوقت (ساعة:دقيقة:ثانية وثانية صباحًا أو مساءً)، 12 ساعة* | 02:55:02 pm |
%R | تنسيق الوقت HH:MM على مدار 24 ساعة، أي ما يعادل %H:%M | 14:55 |
%S | عدد الثواني ( 00-61 ) | 02 |
%t | علامة التبويب الأفقية ( 't' ) |
|
%T | الوقت (تنسيق 24 ساعة) (hh:mm:ss)، يعادل %H:%M:%S | 14:55 |
%u | تنسيق يوم الأسبوع ISO 8601، الاثنين هو 1 ( 1-7 ) | 4 |
%U | رقم الأسبوع في السنة، الأحد هو اليوم الأول ( 00-53 ) | 33 |
%V | أسبوع ISO 8601 ( 00-53 ) | 34 |
%w | يوم الأسبوع (0 يمثل الأحد) ( 0-6 ) | 4 |
%W | رقم الأسبوع من السنة، الاثنين هو اليوم الأول ( 00-53 ) | 34 |
%x | تنسيق تاريخ العرض (mm/dd/yy) * | 08/23/01 |
%X | عرض تنسيق الوقت* | 14:55:02 |
%y | السنة، رقمان ( 00-99 ) | 01 |
%Y | سنة | 2001 |
%z | إزاحة المنطقة الزمنية بين ISO 8601 والتوقيت العالمي المنسق (1 دقيقة = 1، 1 ساعة = 100) | +100 |
%Z | اسم المنطقة الزمنية الحالية، مثل "توقيت الصين الرسمي" * | CDT |
%% | % رمز | % |
مخرجات تنفيذ المثال أعلاه هي:
الوقت والتاريخ - 2016-06-12 12:15:13 الوقت والتاريخ - 2016-06-12 04:15:13