الفرق بين المراجعتين لصفحة: «Ruby/Time/strftime»

من موسوعة حسوب
< Ruby‏ | Time
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>strftime‎</code> الخاص بالصنف <code>Time</code> في روبي}}</noinclude> تصنيف: Ruby تصني...'
 
لا ملخص تعديل
سطر 3: سطر 3:
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Time]]
[[تصنيف: Ruby Time]]
يُنسق التابع <code>strftime</code> [[Ruby/Time|التوقيت]] <code>time</code> وفقًا للموجّهات (directives) الموجودة في سلسلة التنسيق المعطاة.
يُنسق التابع <code>strftime</code> [[Ruby/Time|التوقيت]] وفقًا للموجّهات (directives) الموجودة في سلسلة التنسيق المعطاة.


تبدأ المُوجّهات بعلامة النسبة المئوية (%). سيتم تمرير أي نص لم يتم وضعه على هيئة موجهات إلى [[Ruby/String|السلسلة النصية]] المُخرجة.
تبدأ المُوجّهات بعلامة النسبة المئوية (<code>%</code>). سيتم تمرير أي نص لم يتم وضعه على هيئة موجهات إلى [[Ruby/String|السلسلة النصية]] المُخرجة.


يتكون الموحه من علامة النسبة المئوية (%)، وراية واحدة أو أكثر، وحقل اختياري يمثل الحد الحد الأدنى للعرض، ومعدل اختياري، ومُحَوِّل (conversion specifier) كما يلي:
يتكون الموجه من علامة النسبة المئوية (<code>%</code>)، وراية واحدة أو أكثر، وحقل اختياري يمثل الحد الأدنى للعرض، ومعدل اختياري، ومُحَوِّل (conversion specifier) كما يلي:<syntaxhighlight lang="ruby">%<flags><width><modifier><conversion>‎</syntaxhighlight>الرايات:
* <code>-</code>  : عدم تطويل (pad) المخرجات العددية
* <code>_</code>  استخدام المسافات البيضاء للتطويل
* <code>0</code>  :استخدام الاصفار للتطويل
* <code>^</code>  : حول السلسلة النصية المُخرجة إلى حروف كبيرة.
* <code>#</code>  : غير حالة الأحرف
* <code>:</code>  استخدم النقطتين لأجل ‎<code>%z:‎</code>
يحدد حقل الحد الأدنى قيمة الحد الأدنى للعرض.


<syntaxhighlight lang="ruby">%<flags><width><modifier><conversion></syntaxhighlight>
المعدلات هي "<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). في الخيار ‎%_m ستطول بالمسافات البيضاء ( 1..12)، أما في الخيار  ‎‎%-m '''فلن تُطول''' (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). في الخيار ‎%-d '''لن تُطول''' (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).


<syntaxhighlight lang="ruby">-  don't pad a numerical output
<code>%P</code>: محدد الصباح والمساء بأحرف صغيرة (<code>am</code> أو<code>pm</code>)
_  use spaces for padding
0  use zeros for padding
^  upcase the result string
#  change case
: use colons for %z‎</syntaxhighlight>


يحدد هذا الحقل الحد الأدنى للعرض.
‎<code>%p</code>:امحدد الصباح والمساء بأحرف كبيرة (<code>AM</code> و <code>PM</code>)


المعدلات هي "E" و "O". يتم تجاهلها.
‎<code>%M</code>: رقم الدقيقة في الساعة (00..59)


مُوجّهات التنسيق:
‎<code>%S</code>: رقم الثانية في الدقيقة (00..59)


<syntaxhighlight lang="ruby">Date (Year, Month, Day):
<code>%L</code>: رقم الميليثانية في الثانية (00..999)، يتم اقتطاع الأرقام حتى لا تُنتج العدد 1000.
  %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>


‎<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 منزلا عشريا).
يتم اقتطاع المنازل العشرية حتى تتلاءم مع التنسيق المراد.
|-
|
|-
|
|}
هذا التابع يشبه الدالة strftime () المحددة في ISO C و POSIX.
هذا التابع يشبه الدالة strftime () المحددة في ISO C و POSIX.


سطر 114: سطر 84:
أمثلة:
أمثلة:


 
أمثلة على تنسيقات ISO 8601:<syntaxhighlight lang="ruby">%Y%m%d          => 20071119                  Calendar date (basic)
 
أمثلة على تنسيقات ISO 8601:
 
<syntaxhighlight lang="ruby">%Y%m%d          => 20071119                  Calendar date (basic)
%F              => 2007-11-19                Calendar date (extended)
%F              => 2007-11-19                Calendar date (extended)
%Y-%m            => 2007-11                  Calendar date, reduced accuracy, specific month
%Y-%m            => 2007-11                  Calendar date, reduced accuracy, specific month
سطر 159: سطر 125:
==القيمة المُعادة==
==القيمة المُعادة==
==أمثلة==
==أمثلة==
مثال على استخدام التابع <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>: يستخلص التابع <code>sec</code> من [[Ruby/Time|التوقيت]] رقم الثانية في الدقيقة (0..60) لـ <code>time</code>.
* التابع <code>[[Ruby/Time/subsec|subsec]]</code>: يُعيد التابع <code>subsec</code> الجزء العشري من [[Ruby/Time|التوقيت]] لـ <code>time</code>.
*التابع <code>[[Ruby/Time/subsec|subsec]]</code>: يُعيد التابع <code>subsec</code> الجزء العشري من [[Ruby/Time|التوقيت]] لـ <code>time</code>.
==مصادر==
==مصادر==
*[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‎ في توثيق روبي الرسمي.]

مراجعة 15:15، 7 نوفمبر 2018

يُنسق التابع 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 منزلا عشريا).

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

هذا التابع يشبه الدالة 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                  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)

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

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.

مصادر