الفرق بين المراجعتين ل"Ruby/Time/strftime"

من موسوعة حسوب
< Ruby‏ | Time
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>strftime‎</code> الخاص بالصنف <code>Time</code> في روبي}}</noinclude> تصنيف: Ruby تصني...')
 
ط (مراجعة وتدقيق.)
 
(6 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>strftime‎</code> الخاص بالصنف <code>Time</code> في روبي}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: التابع <code>Time.strftime‎</code> في روبي}}</noinclude>
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Time]]
 
[[تصنيف: Ruby Time]]
يُنسق التابع <code>strftime</code> [[Ruby/Time|التوقيت]] <code>time</code> وفقًا للموجّهات (directives) الموجودة في سلسلة التنسيق المعطاة.
+
يُنسق التابع <code>strftime</code> [[Ruby/Time|التوقيت]] الذي استدعي معه وفقًا للموجّهات (directives) الموجودة في سلسلة التنسيق المُمرَّرة إليه.
 +
==البنية العامة==
 +
<syntaxhighlight lang="ruby">strftime( string ) → string‎</syntaxhighlight>
 +
==المعاملات==
 +
===<code>string‎</code>===
 +
سلسلة التنسيق التي تحدد تنسيق التوقيت المعطى.
 +
تبدأ المُوجّهات بعلامة النسبة المئوية (<code>%</code>). سيتم تمرير أي نص لم يتم إدراجه على شكل الموجهات إلى [[Ruby/String|السلسلة النصية]] المُخرجة. يتكون الموجه من علامة النسبة المئوية (<code>%</code>)، وراية واحدة أو أكثر، وحقل اختياري يمثل الحد الأدنى للعرض، ومُعدِّل اختياري، ومُحَوِّل كما يلي:<syntaxhighlight lang="ruby">%<flags><width><modifier><conversion>‎</syntaxhighlight>الرايات <code>flags</code> المتاحة للاستعمال هي:
 +
*<code>-</code>  : عدم حشو (pad) المخرجات بقيم عددية.
 +
*<code>_</code>  استخدام المسافات البيضاء للحشو.
 +
*<code>0</code>  :استخدام الاصفار للحشو.
 +
*<code>^</code>  : حول السلسلة النصية المُخرجة إلى حروف كبيرة.
 +
*<code>#</code>  : غير حالة الأحرف.
 +
*<code>:</code>  استخدم النقطتين لأجل ‎<code>%z‎</code>.
 +
يحدد الحقل <code>width</code> قيمة الحد الأدنى للعرض.
 +
 
 +
المعدلات <code>modifier</code> هي "<code>E</code>" و "<code>O</code>". وسيتم تجاهلها.
 +
 
 +
مُوجّهات التنسيق وهي:
 +
{| class="wikitable"
 +
!التاريخ (السنة - الشهر - اليوم)
 +
|-
 +
|‎<code>%Y</code>: السنة مع القرن (في حال توفيره)؛ ستطول النتيجة بأربعة منازل على الأقل مثل ‎<code>-0001</code>، و <code>0000</code>، و <code>1995</code>، و <code>2009</code>، و <code>14292</code>‎.
 +
‎<code>%C</code>:  هي ناتج قسمة السنة / 100، مع تقريب الناتج إلى الأسفل، مثل تحويل 2009 إلى 20.
 +
 
 +
‎<code>%y</code>: هي ناتج باقي قسمة السنة % 100 (يتراوح الناتج بين 00..99).
 +
 
 +
‎<code>%m</code>: رقم الشهر في السنة، مع حشوه بصفر (يترواح بين01..12). يمكن استعمال الخيار <code>‎%_m</code> لحشو قيمة الشهر بمسافة بيضاء (مثل 1..12)، أو الخيار <code>‎‎%-m</code> لعدم استعمال أية حاشية (1..12).
 +
 
 +
‎<code>%B</code>: اسم الشهر بالكامل (مثل "<code>January</code><nowiki>''</nowiki>) أو بأحرف كبيرة مع الخيار ‎<code>%^B</code>.
 +
 
 +
‎<code>%b</code>:اسم الشهر المختصر (مثل "<code>JAN</code><nowiki>''</nowiki>) أو بأحرف كبيرة مع الخيار ‎.<code>%^b</code>
 +
 
 +
‎<code>%h</code>: يكافئ ‎<code>%b</code>.
 +
 
 +
‎<code>%d</code>:  رقم اليوم في الشهر، مع حشوه بصفر (01..31). يمكن استعمال الخيار <code>‎%-d</code> لعدم حشو القيمة بصفر (لتصبح بالشكل 1..31).
 +
 
 +
‎<code>%e</code>: رقم اليوم في الشهر، مع حشوه بمسافات بيضاء ( 1..31).
 +
 
 +
‎<code>%j</code>:  رقم اليوم في السنة (001..366).
 +
|-
 +
!الوقت (الساعات - الدقائق - الثواني - أجزاء الثواني)
 +
|-
 +
|‎<code>%H</code>: رقم الساعة في اليوم، في نظام 24 ساعة، مع حشوه بأصفار (00..23).
 +
‎<code>%k</code>:  رقم الساعة في اليوم، في نظام 24 ساعة، مع حشوه بمسافات بيضاء( 0..23).
 +
 
 +
‎<code>%I</code>: رقم الساعة في اليوم، في نظام 12 ساعة، مع حشوه بأصفار ( 1..12).
 +
 
 +
‎<code>%l</code>: رقم الساعة في اليوم، في نظام 12 ساعة، مع حشوه بمسافات بيضاء ( 1..12).
  
تبدأ المُوجّهات بعلامة النسبة المئوية (%). سيتم تمرير أي نص لم يتم وضعه على هيئة موجهات إلى [[Ruby/String|السلسلة النصية]] المُخرجة.
+
‎<code>%P</code>: محدد الصباح والمساء بأحرف صغيرة (<code>am</code> أو<code>pm</code>).
  
يتكون الموحه من علامة النسبة المئوية (%)، وراية واحدة أو أكثر، وحقل اختياري يمثل الحد الحد الأدنى للعرض، ومعدل اختياري، ومُحَوِّل (conversion specifier) كما يلي:
+
‎<code>%p</code>: محدد الصباح والمساء بأحرف كبيرة (<code>AM</code> و <code>PM</code>).
  
<syntaxhighlight lang="ruby">%<flags><width><modifier><conversion>‎</syntaxhighlight>
+
<code>%M</code>: رقم الدقيقة في الساعة (00..59).
  
الرايات:
+
‎<code>%S</code>: رقم الثانية في الدقيقة (00..59).
  
<syntaxhighlight lang="ruby">-  don't pad a numerical output
+
<code>%L</code>: رقم  الميلي ثانية في الثانية (00..999)؛ يتم اقتطاع الأرقام حتى لا تُنتج العدد 1000.
_  use spaces for padding
 
0  use zeros for padding
 
^  upcase the result string
 
#  change case
 
:  use colons for %z‎</syntaxhighlight>
 
  
يحدد هذا الحقل الحد الأدنى للعرض.
+
‎<code>%N</code>: عدد الثواني مع أجزائها؛ عدد المنازل العشرية الافتراضية هو 9 (نانو ثانية). يمكن يمكن تحديد أجزاء الثانية بالشكل التالي:
 +
*<code>%3N</code>: ميلي ثانية (3 أعشار).
 +
*<code>%6N</code>: ميكروثانية (6 أعشار).
 +
*<code>%9N</code>: نانوثانية (9 أعشار).
 +
*<code>%12N</code>: بيكوثانية (12 منزلا عشريا).
 +
*<code>%15N</code>: فيمتوثانية (15 منزلا عشريا).
 +
*<code>%18N</code>: أتوثانية (18 منزلا عشريا).
 +
*<code>%21N</code>: زيبتوثانية (21 منزلا عشريا).
 +
*<code>%24N</code>: يوكتوثانية (24 منزلا عشريا).
 +
يتم اقتطاع المنازل العشرية حتى تتلاءم مع التنسيق المراد.
 +
|-
 +
!المنطقة الزمنية
 +
|-
 +
|‎<code>%z</code>: المنطقة الزمنية على هيئة الفرق في الساعات والدقائق مع التوقيت الزمني الموحد (مثل ‎+0900). يمكن استعمال الرايات مع هذا الموجه بالشكل التالي:
 +
*‎<code>%:z</code>:  فرق الساعات والدقائق مع التوقيت الزمني الموحد مع إضافة نقطتين رأسيتين (مثل ‎+09:00).
 +
*‎<code>%::z</code>:  فرق الساعات والدقائق والثواني مع التوقيت الزمني الموحد مع إضافة نقطتين رأسيتين (مثل ‎+09:00:00).
 +
‎<code>%Z</code>:  اسم مختصر للمنطقة الزمنية أو معلومات مشابهة (تتعلق بنوع النظام المستخدم).
 +
|-
 +
!اليوم من الأسبوع
 +
|-
 +
|‎<code>%A</code>: الاسم الكامل لليوم (مثل "<code>Sunday</code>")؛ الخيار ‎<code>%^A</code> يجعله بأحرف كبيرة (مثل "<code>SUNDAY</code>").
 +
‎<code>%a</code>: الاسم المختصر لليوم (مثل "<code>Sun</code>")؛ الخيار ‎<code>%^a</code> يجعله بأحرف كبيرة (مثل "<code>SUN</code>").
  
المعدلات هي "E" و "O". يتم تجاهلها.
+
‎<code>%u</code>: رقم اليوم من الأسبوع (الاثنين هو اليوم 1 من 1..7).
  
مُوجّهات التنسيق:
+
‎<code>%w</code>: رقم اليوم من الأسبوع (الأحد هو اليوم 0 من 0..6).
 +
|-
 +
!المعيار ISO 8601 لتحديد الأسابيع
 +
|-
 +
|يبدأ الأسبوع الأول من السنة YYYY يوم الإثنين ويتضمن YYYY-01-04. أيام السنة التي تسبق الأسبوع الأول ستُعد من الأسبوع الأخير من العام السابق.
 +
‎<code>%G</code>: الأسبوع السنوي (week-based year).
  
<syntaxhighlight lang="ruby">Date (Year, Month, Day):
+
<code>%g</code>: آخر رقمين من قيمة الأسبوع السنوي (00..99).
  %Y - Year with century if provided, will pad result at least 4 digits.
 
          -0001, 0000, 1995, 2009, 14292, etc.
 
  %C - year / 100 (rounded down such as 20 in 2009)
 
  %y - year % 100 (00..99)
 
  %m - Month of the year, zero-padded (01..12)
 
          %_m  blank-padded ( 1..12)
 
          %-m  no-padded (1..12)
 
  %B - The full month name (``January'')
 
          %^B  uppercased (``JANUARY'')
 
  %b - The abbreviated month name (``Jan'')
 
          %^b  uppercased (``JAN'')
 
  %h - Equivalent to %b
 
  %d - Day of the month, zero-padded (01..31)
 
          %-d  no-padded (1..31)
 
  %e - Day of the month, blank-padded ( 1..31)
 
  %j - Day of the year (001..366)
 
Time (Hour, Minute, Second, Subsecond):
 
  %H - Hour of the day, 24-hour clock, zero-padded (00..23)
 
  %k - Hour of the day, 24-hour clock, blank-padded ( 0..23)
 
  %I - Hour of the day, 12-hour clock, zero-padded (01..12)
 
  %l - Hour of the day, 12-hour clock, blank-padded ( 1..12)
 
  %P - Meridian indicator, lowercase (``am'' or ``pm'')
 
  %p - Meridian indicator, uppercase (``AM'' or ``PM'')
 
  %M - Minute of the hour (00..59)
 
  %S - Second of the minute (00..60)
 
  %L - Millisecond of the second (000..999)
 
      The digits under millisecond are truncated to not produce 1000.
 
  %N - Fractional seconds digits, default is 9 digits (nanosecond)
 
          %3N  millisecond (3 digits)
 
          %6N  microsecond (6 digits)
 
          %9N  nanosecond (9 digits)
 
          %12N picosecond (12 digits)
 
          %15N femtosecond (15 digits)
 
          %18N attosecond (18 digits)
 
          %21N zeptosecond (21 digits)
 
          %24N yoctosecond (24 digits)
 
      The digits under the specified length are truncated to avoid
 
      carry up.
 
Time zone:
 
  %z - Time zone as hour and minute offset from UTC (e.g. +0900)
 
          %:z - hour and minute offset from UTC with a colon (e.g. +09:00)
 
          %::z - hour, minute and second offset from UTC (e.g. +09:00:00)
 
  %Z - Abbreviated time zone name or similar information.  (OS dependent)
 
Weekday:
 
  %A - The full weekday name (``Sunday'')
 
          %^A  uppercased (``SUNDAY'')
 
  %a - The abbreviated name (``Sun'')
 
          %^a  uppercased (``SUN'')
 
  %u - Day of the week (Monday is 1, 1..7)
 
  %w - Day of the week (Sunday is 0, 0..6)
 
ISO 8601 week-based year and week number:
 
The first week of YYYY starts with a Monday and includes YYYY-01-04.
 
The days in the year before the first week are in the last week of
 
the previous year.
 
  %G - The week-based year
 
  %g - The last 2 digits of the week-based year (00..99)
 
  %V - Week number of the week-based year (01..53)
 
Week number:
 
The first week of YYYY that starts with a Sunday or Monday (according to %U
 
or %W). The days in the year before the first week are in week 0.
 
  %U - Week number of the year. The week starts with Sunday. (00..53)
 
  %W - Week number of the year. The week starts with Monday. (00..53)
 
Seconds since the Epoch:
 
  %s - Number of seconds since 1970-01-01 00:00:00 UTC.
 
Literal string:
 
  %n - Newline character (\n)
 
  %t - Tab character (\t)
 
  %% - Literal ``%'' character
 
Combination:
 
  %c - date and time (%a %b %e %T %Y)
 
  %D - Date (%m/%d/%y)
 
  %F - The ISO 8601 date format (%Y-%m-%d)
 
  %v - VMS date (%e-%^b-%4Y)
 
  %x - Same as %D
 
  %X - Same as %T
 
  %r - 12-hour time (%I:%M:%S %p)
 
  %R - 24-hour time (%H:%M)
 
  %T - 24-hour time (%H:%M:%S)‎</syntaxhighlight>
 
  
هذا التابع يشبه الدالة strftime () المحددة في ISO C و POSIX.
+
‎<code>%V</code>: رقم الأسبوع من السنة (01..53).
 +
|-
 +
!رقم الأسبوع
 +
|-
 +
|الأسبوع الأول من السنة YYYY الذي يبدأ بالأحد أو الاثنين (وفقًا للموجه ‎<code>%W</code> أو ‎<code>%U</code>).  أيام السنة التي تسبق الأسبوع الأول ستُعد من الأسبوع رقم 0.
 +
‎<code>%U</code>: رقم الأسبوع من السنة؛ الأسبوع يبدأ يوم الأحد (00..53).
  
في حين أن جميع المُوجّهات مستقلة عن الإعدادات المحلية منذ روبي 1.9، فإن Z% يعتمد على نظام التشغيل. لذلك، قد تختلف النتيجة حتى لو تم استخدام نفس سلسلة التنسيق في أنظمة أخرى مثل C.
+
‎<code>%W</code>:رقم الأسبوع من السنة؛ الأسبوع يبدأ يوم الاثنين (00..53).
 +
|-
 +
!الثواني منذ [https://ar.wikipedia.org/wiki/%D8%AA%D9%88%D9%82%D9%8A%D8%AA_%D9%8A%D9%88%D9%86%D9%83%D8%B3 توقيت يونيكس]
 +
|-
 +
|‎<code>%s</code>: عدد الثواني التي مرت منذ الوقت 1970-01-01 00:00:00 UTC.
 +
|-
 +
!السلاسل النصية الحرفية
 +
|-
 +
|‎<code>%n</code>: محرف السطر الجديد ("<code>‎\n</code>").
 +
‎<code>%t</code>: محرف مسافة الجدولة الأفقية ("<code>‎\t</code>").
  
يوصى باستخدام % z على% Z. لأن % z لا يحدد المنطقة الزمنية. على سبيل المثال ، يتم استخدام "CST" في أمريكا / شيكاغو (-06: 00) وأمريكا / هافانا (-05: 00) وآسيا / هاربين (+08: 00) وأستراليا / داروين (+09: 30) وأستراليا / أديلايد (+10: 30). كما أن % Z يعتمد بشكل كبير على نظام التشغيل. على سبيل المثال، قد يقوم بإنشاء [[Ruby/String|سلسلة نصية]] من غير الترميز ASCII على ويندوز الياباني. أي أن النتيجة يمكن أن تكون مختلفة عن "JST". لذا يُنصح باستخدام ،% z.
+
‎<code>%%</code>: المحرف "<code>%</code>".
 +
|-
 +
!موجهات تجميعية
 +
|-
 +
|‎<code>%c</code>:  التاريخ والوقت (‎<code>%a</code> <code>%b</code> ‎<code>%e</code>‎ ‎<code>%T</code>‎ ‎<code>%Y</code>).
 +
‎<code>%D</code>: التاريخ  (<code>‎%m/%d/%y</code>).
  
أمثلة:
+
‎<code>%F</code>: تنسيق ISO 8601 للأوقات  (<code>‎%Y-%m-%d</code>).
  
 +
‎<code>%V</code>:  تاريخ  VMS  (على هيئة <code>‎%e-%^b-%4Y</code>).
  
 +
‎<code>%x</code>:  يشبه ‎<code>%D‎</code>.
  
أمثلة على تنسيقات ISO 8601:
+
‎<code>%X</code>:  يشبه ‎<code>%T‎</code>.
 +
 
 +
‎<code>%r</code>:  الوقت بصيغة 12 ساعة (<code>‎%I:%M:%S %p</code>).
 +
 
 +
‎<code>%r</code>: الوقت بصيغة 24 ساعة (‎<code>%H:%M‎</code>).
 +
 
 +
‎<code>%T</code>: الوقت بصيغة 24 ساعة (‎<code>%H:%M:%S‎</code>).
 +
|}هذا التابع يشبه الدالة <code>strftime()‎</code> المعرفة في ISO C و POSIX.
 +
 
 +
في حين أن جميع المُوجّهات مستقلة عن الإعدادات المحلية منذ روبي 1.9، فإنَّ <code>‎Z%</code> يعتمد على نظام التشغيل. لذلك، قد تختلف النتيجة حتى لو تم استخدام نفس سلسلة التنسيق في أنظمة أخرى مثل لغة C.
 +
 
 +
يوصى باستخدام ‎ <code>%z</code> بدلًا من <code>%Z</code> لأنَّ ‎<code>%Z</code> لا تحدِّد المنطقة الزمنية. على سبيل المثال، يتم استخدام "<code>CST</code>" في أمريكا / شيكاغو (‎-06: 00) وأمريكا / هافانا (‎-05: 00) وآسيا / هاربين (‎+08: 00) وأستراليا / داروين (‎+09: 30) وأستراليا / أديلايد (‎+10: 30). كما أنَّ ‎<code>%Z</code> تعتمد بشكل كبير على نظام التشغيل. على سبيل المثال، قد تقوم بإنشاء [[Ruby/String|سلسلة نصية]] من غير الترميز ASCII على ويندوز لغته ياباني. أي أنّ النتيجة يمكن أن تكون مختلفة عن "<code>JST</code>". بناءً على ذلك، يُنصح باستخدام ‎<code>%z</code>.
 +
 
 +
أمثلة على تنسيقات ISO 8601:<syntaxhighlight lang="ruby">%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                  تاريخ الاسبوع - دفة محدودة - اسبوع محدد (extended)
 +
%H%M%S          => 083748                    التوقيت المحلي - أساسي
 +
%T              => 08:37:48                  التوقيت المحلي - موسع
 +
%H%M            => 0837                      التوقيت المحلي - دقة محدودة - دقيقة محددة -اساسي
 +
%H:%M            => 08:37                    التوقيت المحلي - دقة محدودة - دقيقة محددة -موسع
 +
%H              => 08                        التوقيت المحلي - دقة محدودة - ساعة محددة
 +
%H%M%S,%L        => 083748,000                التوقيت المحلي مع كسور عشرية مفصولة بفواصل - أساسي
 +
%T,%L            => 08:37:48,000              التوقيت المحلي مع كسور عشرية مفصولة بفواصل - موسع
 +
%H%M%S.%L        => 083748.000                لتوقيت المحلي مع كسور عشرية، التوقف التام  كإشارة للأعشار - أساس
 +
%T.%L            => 08:37:48.000              لتوقيت المحلي مع كسور عشرية، التوقف التام  كإشارة للأعشار - موسع
 +
%H%M%S%z        => 083748-0600              التوقيت المحلي والفارق مع التوقيت العالمي الموحد - أساس
 +
%T%:z            => 08:37:48-06:00            التوقيت المحلي والفارق مع التوقيت العالمي الموحد - موسع
 +
%Y%m%dT%H%M%S%z  => 20071119T083748-0600      تاريخ ووقت اليوم من تاريخ الجدول الزمني - اساسي
 +
%FT%T%:z        => 2007-11-19T08:37:48-06:00 تاريخ ووقت اليوم من تاريخ الجدول الزمني موسع
 +
%Y%jT%H%M%S%z    => 2007323T083748-0600      تاريخ ووقت اليوم من التاريخ العادي - اساسي
 +
%Y-%jT%T%:z      => 2007-323T08:37:48-06:00  تاريخ ووقت اليوم من التاريخ العادي - موسع
 +
%GW%V%uT%H%M%S%z => 2007W471T083748-0600      تاريخ ووقت اليوم من تاريخ الأسبوع - أساسي
 +
%G-W%V-%uT%T%:z  => 2007-W47-1T08:37:48-06:00 تاريخ ووقت اليوم من تاريخ الأسبوع - موسع
 +
%Y%m%dT%H%M      => 20071119T0837            تاريخ الحدول الزمني والتوقيت المحلي - أساسي
 +
%FT%R            => 2007-11-19T08:37          تاريخ الحدول الزمني والتوقيت المحلي - موسع
 +
%Y%jT%H%MZ      => 2007323T0837Z            التاريخ العادي والتوقيت العالمي الموحد- اساسي
 +
%Y-%jT%RZ        => 2007-323T08:37Z          التاريخ العادي والتوقيت العالمي الموحد- موسع
 +
GW%V%uT%H%M%z  => 2007W471T0837-0600        تاريخ الأسبوع والتوقيت المحلي والفارق مع التوقيت العالمي الموحد - اساسي
 +
%G-W%V-%uT%R%:z  => 2007-W47-1T08:37-06:00    تاريخ الأسبوع والتوقيت المحلي والفارق مع التوقيت العالمي الموحد - موسع</syntaxhighlight>
 +
==القيمة المعادة==
 +
تعاد [[Ruby/String|سلسلة نصية]] تحوي التوقيت المعطى بعد تنسيقه وفقًا لسلسلة التنسيق <code>string</code>.
  
<syntaxhighlight lang="ruby">%Y%m%d          => 20071119                  Calendar date (basic)
 
%F              => 2007-11-19                Calendar date (extended)
 
%Y-%m            => 2007-11                  Calendar date, reduced accuracy, specific month
 
%Y              => 2007                      Calendar date, reduced accuracy, specific year
 
%C              => 20                        Calendar date, reduced accuracy, specific century
 
%Y%j            => 2007323                  Ordinal date (basic)
 
%Y-%j            => 2007-323                  Ordinal date (extended)
 
%GW%V%u          => 2007W471                  Week date (basic)
 
%G-W%V-%u        => 2007-W47-1                Week date (extended)
 
%GW%V            => 2007W47                  Week date, reduced accuracy, specific week (basic)
 
%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)‎</syntaxhighlight>
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">strftime( string ) → string‎</syntaxhighlight>
 
==المعاملات==
 
===<code>string‎</code>===
 
[[Ruby/String|سلسلة نصية]]
 
==القيمة المُعادة==
 
 
==أمثلة==
 
==أمثلة==
مثال على استخدام التابع <code>strftime‎</code>:
+
مثال على استخدام التابع <code>strftime‎</code>:<syntaxhighlight lang="ruby">t = Time.new(2007,11,19,8,37,48,"-06:00") #=> 2007-11-19 08:37:48 -0600
<syntaxhighlight lang="ruby">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("Printed on %m/%d/%Y")  #=> "Printed on 11/19/2007"
 
t.strftime("at %I:%M%p")            #=> "at 08:37AM"‎</syntaxhighlight>
 
t.strftime("at %I:%M%p")            #=> "at 08:37AM"‎</syntaxhighlight>
==انظر أيضا==
+
==انظر أيضًا==
* التابع <code>[[Ruby/Time/sec|sec]]</code>: يستخلص التابع <code>sec</code> من [[Ruby/Time|التوقيت]] رقم الثانية في الدقيقة (0..60) لـ <code>time</code>.
+
*التابع <code>[[Ruby/Time/sec|sec]]</code>: يستخلص من [[Ruby/Time|التوقيت]] رقم الثانية في الدقيقة.
* التابع <code>[[Ruby/Time/subsec|subsec]]</code>: يُعيد التابع <code>subsec</code> الجزء العشري من [[Ruby/Time|التوقيت]] لـ <code>time</code>.
+
*التابع <code>[[Ruby/Time/subsec|subsec]]</code>: يُعيد الجزء العشري للثانية من [[Ruby/Time|التوقيت]] المعطى.
 
==مصادر==
 
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Time.html#method-i-strftime قسم التابع strftime‎ في الصنف Time‎ في توثيق روبي الرسمي.]
+
*[http://ruby-doc.org/core-2.5.1/Time.html#method-i-strftime قسم التابع strftime‎ في الصنف Time‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 16:51، 7 ديسمبر 2018

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

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

strftime( string )  string

المعاملات

string‎

سلسلة التنسيق التي تحدد تنسيق التوقيت المعطى.

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

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

الرايات flags المتاحة للاستعمال هي:

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

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

المعدلات modifier هي "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                  تاريخ الاسبوع - دفة محدودة - اسبوع محدد (extended)
%H%M%S           => 083748                    التوقيت المحلي - أساسي
%T               => 08:37:48                  التوقيت المحلي - موسع
%H%M             => 0837                      التوقيت المحلي - دقة محدودة - دقيقة محددة -اساسي
%H:%M            => 08:37                     التوقيت المحلي - دقة محدودة - دقيقة محددة -موسع
%H               => 08                        التوقيت المحلي - دقة محدودة - ساعة محددة 
%H%M%S,%L        => 083748,000                التوقيت المحلي مع كسور عشرية مفصولة بفواصل - أساسي
%T,%L            => 08:37:48,000              التوقيت المحلي مع كسور عشرية مفصولة بفواصل - موسع
%H%M%S.%L        => 083748.000                لتوقيت المحلي مع كسور عشرية، التوقف التام  كإشارة للأعشار - أساس
%T.%L            => 08:37:48.000              لتوقيت المحلي مع كسور عشرية، التوقف التام  كإشارة للأعشار - موسع
%H%M%S%z         => 083748-0600               التوقيت المحلي والفارق مع التوقيت العالمي الموحد - أساس
%T%:z            => 08:37:48-06:00            التوقيت المحلي والفارق مع التوقيت العالمي الموحد - موسع
%Y%m%dT%H%M%S%z  => 20071119T083748-0600       تاريخ ووقت اليوم من تاريخ الجدول الزمني - اساسي
%FT%T%:z         => 2007-11-19T08:37:48-06:00 تاريخ ووقت اليوم من تاريخ الجدول الزمني موسع
%Y%jT%H%M%S%z    => 2007323T083748-0600       تاريخ ووقت اليوم من التاريخ العادي - اساسي
%Y-%jT%T%:z      => 2007-323T08:37:48-06:00  تاريخ ووقت اليوم من التاريخ العادي - موسع
%GW%V%uT%H%M%S%z => 2007W471T083748-0600      تاريخ ووقت اليوم من تاريخ الأسبوع - أساسي
%G-W%V-%uT%T%:z  => 2007-W47-1T08:37:48-06:00 تاريخ ووقت اليوم من تاريخ الأسبوع - موسع
%Y%m%dT%H%M      => 20071119T0837             تاريخ الحدول الزمني والتوقيت المحلي - أساسي
%FT%R            => 2007-11-19T08:37          تاريخ الحدول الزمني والتوقيت المحلي - موسع
%Y%jT%H%MZ       => 2007323T0837Z             التاريخ العادي والتوقيت العالمي الموحد- اساسي
%Y-%jT%RZ        => 2007-323T08:37Z           التاريخ العادي والتوقيت العالمي الموحد- موسع
GW%V%uT%H%M%z   => 2007W471T0837-0600        تاريخ الأسبوع والتوقيت المحلي والفارق مع التوقيت العالمي الموحد - اساسي
%G-W%V-%uT%R%:z  => 2007-W47-1T08:37-06:00    تاريخ الأسبوع والتوقيت المحلي والفارق مع التوقيت العالمي الموحد - موسع

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

تعاد سلسلة نصية تحوي التوقيت المعطى بعد تنسيقه وفقًا لسلسلة التنسيق 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: يستخلص من التوقيت رقم الثانية في الدقيقة.
  • التابع subsec: يُعيد الجزء العشري للثانية من التوقيت المعطى.

مصادر