التابع strftime‎ الخاص بالصنف Time في روبي

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث

يُنسق التابع strftime التوقيت وفقًا للموجّهات (directives) الموجودة في سلسلة التنسيق المعطاة.

تبدأ المُوجّهات بعلامة النسبة المئوية (%). سيتم تمرير أي نص لم يتم وضعه على هيئة موجهات إلى السلسلة النصية المُخرجة.

يتكون الموجه من علامة النسبة المئوية (%)، وراية واحدة أو أكثر، وحقل اختياري يمثل الحد الأدنى للعرض، ومعدل اختياري، ومُحَوِّل (conversion specifier) كما يلي:

%<flags><width><modifier><conversion>

الرايات:

  • -  : عدم تطويل (pad) المخرجات العددية
  • _  استخدام المسافات البيضاء للتطويل
  • 0  :استخدام الاصفار للتطويل
  • ^  : حول السلسلة النصية المُخرجة إلى حروف كبيرة.
  • #  : غير حالة الأحرف
  • :  استخدم النقطتين لأجل ‎%z:‎

يحدد حقل الحد الأدنى قيمة الحد الأدنى للعرض.

المعدلات هي "E" و "O". وسيتم تجاهلها.

مُوجّهات التنسيق:

التاريخ (السنة - الشهر - اليوم)
%Y: السنة مع القرن (في حال توفيره)، سيطول النتيجة بأربعة منازل على الاقل. مثلا: ‎-0001, 0000, 1995, 2009, 14292

%C: السنة\ 100، مع تقريبها إلى الأسفل، مثل تحويل 2009 إلى 20.

%y: السنة % 100، (00..99)

%m: رقم الشهر في السنة، مع تطويله بالصفر (01..12). في الخيار ‎%_m ستطول بالمسافات البيضاء ( 1..12)، أما في الخيار ‎‎%-m فلن تُطول (1..12)

%B: اسم الشهر بالكامل ("January'') أو بأحرف كبيرة مع الخيار ‎%^B

%b:اسم الشهر المختصر("JAN'') أو بأحرف كبيرة مع الخيار ‎%^b

%h: يكافئ ‎%b

%d: رقم اليوم في الشهر، مع تطويله بالصفر (01..31). في الخيار ‎%-d لن تُطول (1..31)

%e: رقم اليوم في الشهر، مع تطويله بالمسافات البيضاء ( 1..31)

%j: رقم اليوم في السنة (001..366)

الوقت (الساعات - الدقائق - الثواني - كسور الثواني)
%H: رقم الساعة في اليوم، في نظام 24 ساعة، مع تطويله بالأصفار (00..23).

%k: رقم الساعة في اليوم، في نظام 24 ساعة، مع تطويله بالمسافات البيضاء( 0..23).

%I: رقم الساعة في اليوم، في نظام 12 ساعة، مع تطويله بالأصفار ( 1..12).

%l: رقم الساعة في اليوم، في نظام 12 ساعة، مع تطويله بالمسافات البيضاء( 1..12).

%P: محدد الصباح والمساء بأحرف صغيرة (am أوpm)

%p:امحدد الصباح والمساء بأحرف كبيرة (AM و PM)

%M: رقم الدقيقة في الساعة (00..59)

%S: رقم الثانية في الدقيقة (00..59)

%L: رقم الميليثانية في الثانية (00..999)، يتم اقتطاع الأرقام حتى لا تُنتج العدد 1000.

%N: عدد الثواني مع الكسور، عدد المنازل العشرية الافتراضية هو 9 (نانو ثانية)،

  • %3N: ميليثانية (3 أعشار).
  • %6N: ميكروثانية (6 أعشار).
  • %9N: نانوثانية (9 أعشار).
  • %12N: بيكوثانية (12 منزلا عشريا).
  • %15N: فيمتوثانية (15 منزلا عشريا).
  • %18N: أتوثانية (18 منزلا عشريا).
  • %21N: زيبتوثانية (21 منزلا عشريا).
  • %24N: يوكتوثانية (24 منزلا عشريا).

يتم اقتطاع المنازل العشرية حتى تتلاءم مع التنسيق المراد.

المنطقة الزمنية
%z: المنطقة الزمنية على هيئة الفرق في الساعات والدقائق مع التوقيت الزمني الموحد (مثلا ‎+0900)
  • %:z: فرق الساعات والدقائق مع التوقيت الزمني الموحد مع إضافة نقطتين رأسيتين (مثلا ‎+09:00)
  • %::z: فرق الساعات والدقائق والثواني مع التوقيت الزمني الموحد مع إضافة نقطتين رأسيتين (مثلا ‎+09:00:00)

%Z: اسم مختصر للمنطقة الزمنية أو معلومات مشابهة (تتعلق بنوع النظام المستخد)

اليوم من الأسبوع
%A: الاسم الكامل لليوم ("Sunday")، الخيار ‎%^A يجعله بأحرف كبيرة ("SUNDAY").

%a: الاسم المختصر لليوم ("Sun")، الخيار ‎%^a يجعله بأحرف كبيرة ("SUN").

%u: رقم اليوم من الأسبوع (الاثنين هو اليوم 1 من 1..7)

%w: رقم اليوم من الأسبوع (الأحد هو اليوم 0 من 0..6)

معيار ISO 8601 لتحديد الأسابيع
يبدأ الأسبوع الأول من السنة YYYY يوم الإثنين ويتضمن YYYY-01-04. أيام السنة التي تسبق الأسبوع الأول ستُعد من الأسبوع الأخير من العام السابق.

%G: الأسبوع السنوي (week-based year).

%g: آخر رقمين من قيمة الأسبوع السنوي (00..99).

%V: رقم الأسبوع من السنة (01..53)

رقم الأسبوع
الأسبوع الأول من السنة YYYY الذي يبدأ بالأحد أو الاثنين (وفقًا للرايات ‎%W أو ‎%U). أيام السنة التي تسبق الأسبوع الأول ستُعد من الأسبوع رقم 0.

%U: رقم الأسبوع من السنة، الأسبوع يبدأ يوم الأحد (00..53)

%W:رقم الأسبوع من السنة، الأسبوع يبدأ يوم الاثنين (00..53)

الثواني منذ حقبة يونيكس
%s: عدد الثواني التي مرت منذ 1970-01-01 00:00:00 UTC.
السلاسل النصية الحرفية
%n: محرف السطر الجديد ("‎\n")

%t: محرف التبويب ("‎\t").

%%: المحرف "%"

التوليفات
%c: التاريخ والوقت (‎%a %b%e‎ ‎%T‎ ‎%Y)

%D: التاريخ (‎%m/%d/%y).

%F: تنسيق ISO 8601 للأوقات (‎%Y-%m-%d).

%V: تاريخ VMS (على هيئة ‎%e-%^b-%4Y).

%x: يشبه ‎%D‎

%X: يشبه ‎%T‎

%r: الوقت بصيغة 12 ساعة (‎%I:%M:%S %p).

%r: الوقت بصيغة 24 ساعة (‎%H:%M‎).

%T: الوقت بصيغة 24 ساعة (‎%H:%M:%S‎).

هذا التابع يشبه الدالة strftime()‎ المعرفة في ISO C و POSIX.

في حين أن جميع المُوجّهات مستقلة عن الإعدادات المحلية منذ روبي 1.9، فإن ‎Z% يعتمد على نظام التشغيل. لذلك، قد تختلف النتيجة حتى لو تم استخدام نفس سلسلة التنسيق في أنظمة أخرى مثل لغة C.

يوصى باستخدام‎ %z بدلا من %Z. لأن ‎%Z لا تحدد المنطقة الزمنية. على سبيل المثال ، يتم استخدام "CST" في أمريكا / شيكاغو (‎-06: 00) وأمريكا / هافانا (‎-05: 00) وآسيا / هاربين (‎+08: 00) وأستراليا / داروين (‎+09: 30) وأستراليا / أديلايد (‎+10: 30). كما أن ‎%Z تعتمد بشكل كبير على نظام التشغيل. على سبيل المثال، قد تقوم بإنشاء سلسلة نصية من غير الترميز ASCII على ويندوز الياباني. أي أنّ النتيجة يمكن أن تكون مختلفة عن "JST". لذا يُنصح باستخدام ‎%z.

أمثلة على تنسيقات ISO 8601:

%Y%m%d           => 20071119                  تاريخ الجداول الزمنية
%F               => 2007-11-19                تاريخ الجداول الزمنية - موسع
%Y-%m            => 2007-11                   تاريخ الجداول الزمنية - دفة محدودة - شهر محدد
%Y               => 2007                      تاريخ الجداول الزمنية - دفة محدودة - سنة محدد 
%C               => 20                        تاريخ الجداول الزمنية - دفة محدودة - قرن محدد 
%Y%j             => 2007323                   التاريخ الأصلي - أساسي
%Y-%j            => 2007-323                  التاريخ الأصلي - موسع
%GW%V%u          => 2007W471                  تاريخ الأسبوع - أساسي
%G-W%V-%u        => 2007-W47-1                تاريخ الأسبوع - موسع
%GW%V            => 2007W47                   تاريخ الاسبوع - دفة محدودة - شهر محدد
%G-W%V           => 2007-W47                  Week date, reduced accuracy, specific week (extended)
%H%M%S           => 083748                    Local time (basic)
%T               => 08:37:48                  Local time (extended)
%H%M             => 0837                      Local time, reduced accuracy, specific minute (basic)
%H:%M            => 08:37                     Local time, reduced accuracy, specific minute (extended)
%H               => 08                        Local time, reduced accuracy, specific hour
%H%M%S,%L        => 083748,000                Local time with decimal fraction, comma as decimal sign (basic)
%T,%L            => 08:37:48,000              Local time with decimal fraction, comma as decimal sign (extended)
%H%M%S.%L        => 083748.000                Local time with decimal fraction, full stop as decimal sign (basic)
%T.%L            => 08:37:48.000              Local time with decimal fraction, full stop as decimal sign (extended)
%H%M%S%z         => 083748-0600               Local time and the difference from UTC (basic)
%T%:z            => 08:37:48-06:00            Local time and the difference from UTC (extended)
%Y%m%dT%H%M%S%z  => 20071119T083748-0600      Date and time of day for calendar date (basic)
%FT%T%:z         => 2007-11-19T08:37:48-06:00 Date and time of day for calendar date (extended)
%Y%jT%H%M%S%z    => 2007323T083748-0600       Date and time of day for ordinal date (basic)
%Y-%jT%T%:z      => 2007-323T08:37:48-06:00   Date and time of day for ordinal date (extended)
%GW%V%uT%H%M%S%z => 2007W471T083748-0600      Date and time of day for week date (basic)
%G-W%V-%uT%T%:z  => 2007-W47-1T08:37:48-06:00 Date and time of day for week date (extended)
%Y%m%dT%H%M      => 20071119T0837             Calendar date and local time (basic)
%FT%R            => 2007-11-19T08:37          Calendar date and local time (extended)
%Y%jT%H%MZ       => 2007323T0837Z             Ordinal date and UTC of day (basic)
%Y-%jT%RZ        => 2007-323T08:37Z           Ordinal date and UTC of day (extended)
%GW%V%uT%H%M%z   => 2007W471T0837-0600        Week date and local time and difference from UTC (basic)
%G-W%V-%uT%R%:z  => 2007-W47-1T08:37-06:00    Week date and local time and difference from UTC (extended)

البنية العامة

strftime( string )  string

المعاملات

string‎

سلسلة نصية

القيمة المُعادة

أمثلة

مثال على استخدام التابع strftime‎:

t = Time.new(2007,11,19,8,37,48,"-06:00") #=> 2007-11-19 08:37:48 -0600
t.strftime("Printed on %m/%d/%Y")   #=> "Printed on 11/19/2007"
t.strftime("at %I:%M%p")            #=> "at 08:37AM"‎

انظر أيضا

  • التابع sec: يستخلص التابع sec من التوقيت رقم الثانية في الدقيقة (0..60) لـ time.
  • التابع subsec: يُعيد التابع subsec الجزء العشري من التوقيت لـ time.

مصادر