الفرق بين المراجعتين لصفحة: «Ruby/Time»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>Time</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Timeالصنف <code>Time</code>...' |
جميل-بيلوني (نقاش | مساهمات) مراجعة |
||
(3 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: | <noinclude>{{DISPLAYTITLE: الصنف <code>Time</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby Time]]الصنف <code>Time</code> هو تجريد لمفهومي التاريخ والوقت. يتم تخزين <code>Time</code> داخليا كعدد الثواني (مع | [[تصنيف: Ruby Class]] | ||
[[تصنيف: Ruby Time]] | |||
1 يناير 1970 00:00 بالتوقيت العالمي. انظر | الصنف <code>Time</code> هو تجريد لمفهومي التاريخ والوقت. يتم تخزين <code>Time</code> داخليا كعدد الثواني (مع كسورها) منذ [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 توقيت يونيكس] (1 يناير 1970 00:00 بالتوقيت العالمي). انظر أيضًا الوحدة <code>[[Ruby/Date|Date]]</code> لمزيد من المعلومات. | ||
يعامِل الصنف <code>Time</code> توقيت جرينتش (GMT، اختصار للعبارة Greenwich Mean Time) والتوقيت العالمي الموحد (UTC، اختصار للعبارة Universal Time Coordinated) على أنهما متكافئان. توقيت جرينتش هو الطريقة الأقدم للإشارة إلى هذه الأوقات المرجعية، ولا تزال موجودة في أسماء الاستدعاءات على أنظمة POSIX. | |||
يمكن أن يكون لجميع الأوقات كسور. انتبه لهذا الأمر عند مقارنة الأوقات مع بعضها البعض؛ فالأوقات التي تبدو متساوية عند عرضها، قد تكون مختلفة عند المقارنة. | |||
منذ روبي 1.9.2، يستخدم الصنف <code>Time</code> عددًا صحيحًا ذا إشارة بحجم 63 بت أو عددًا من النوع <code>Bignum</code> أو <code>[[Ruby/Rational|Rational]]</code>. العدد الصحيح يمثل عدد النانوثواني منذ بدء [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 توقيت يونيكس]، والتي يمكن أن تمثل 1823-11-12 بالقيمة 2116-02-20. عند استخدام <code>Bignum</code> أو <code>[[Ruby/Rational|Rational]]</code> (قبل 1823، وبعد 2116، بالنانوثانية) ، يعمل الصنف <code>Time</code> بشكل أبطأ مقارنة باستخدام الأعداد الصحيحة. | |||
<code>[[Ruby// | |||
== الأمثلة == | |||
كل الأمثلة الموجودة في صفحات التوابع تعمل باستخدام المنطقة الزمنية EST (التوقيت الشرقي القياسي [Eastern Standard Time]) والتي تساوي GMT-5 بتوقيت غرينتش. | |||
إنشاء توقيت جديد <code>Time</code> | == إنشاء توقيت جديد == | ||
<code>[[Ruby// | يمكنك إنشاء توقيت جديد (نسخة من الصنف <code>Time</code>) عبر التابع <code>[[Ruby/Time/new|new]]</code>، إذ سيستخدم الوقت الحالي في النظام. التابع <code>[[Ruby/Time/now|now]]</code> هو اسم بديل للمتغير <code>this</code>. يمكنك أيضًا تمرير أجزاء من الوقت إلى <code>[[Ruby/Time/new|new]]</code>، مثل السنة والشهر والدقيقة وما إلى ذلك. عندما تريد إنشاء توقيت بهذا التابع، فيجب أن تمرر السنة على الأقل. إذا مررت السنة وحدها، فسيتم تعيين الوقت الافتراضي لبقية القيم عند الشهر يناير/كانون الثاني من بداية ذلك العام على الساعة 00:00:00 بتوقيت المنطقة الزمنية الحالية للنظام. | ||
إليك بعض الأمثلة:<syntaxhighlight lang="ruby">Time.new(2002) #=> 2002-01-01 00:00:00 -0500 | |||
<syntaxhighlight lang="ruby">Time.new(2002) #=> 2002-01-01 00:00:00 -0500 | |||
Time.new(2002, 10) #=> 2002-10-01 00:00:00 -0500 | Time.new(2002, 10) #=> 2002-10-01 00:00:00 -0500 | ||
Time.new(2002, 10, 31) #=> 2002-10-31 00:00:00 -0500 | Time.new(2002, 10, 31) #=> 2002-10-31 00:00:00 -0500 | ||
Time.new(2002, 10, 31, 2, 2, 2, "+02:00") #=> 2002-10-31 02:02:02 +0200</syntaxhighlight> | Time.new(2002, 10, 31, 2, 2, 2, "+02:00") #=> 2002-10-31 02:02:02 +0200</syntaxhighlight>يمكنك أيضًا استخدام التوابع <code>[[Ruby/Time/gm|gm]]</code> و <code>[[Ruby/Time/local|local]]</code> و <code>[[Ruby/Time/utc|utc]]</code> لاعتماد المناطق الزمنية لغرينتش أو التوقيت المحلي أو التوقيت العالمي بدلًا من استخدام إعدادات النظام الحالي. | ||
يمكنك أيضًا استخدام gm و local و <code>[[Ruby/Time/utc|utc]]</code> لاعتماد المناطق الزمنية | |||
يمكنك أيضًا إنشاء توقيت جديد باستخدام <code>[[Ruby/Time/at| | يمكنك أيضًا إنشاء توقيت جديد باستخدام <code>[[Ruby/Time/at|at]]</code>، والذي يأخذ عدد الثواني (أو أعشار الثواني) منذ بدء [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 توقيت يونيكس].<syntaxhighlight lang="ruby">Time.at(628232400) #=> 1989-11-28 00:00:00 -0500</syntaxhighlight> | ||
<syntaxhighlight lang="ruby">Time.at(628232400) #=> 1989-11-28 00:00:00 -0500</syntaxhighlight | |||
بمجرد أن | == العمل مع التوقيتات == | ||
<syntaxhighlight lang="ruby">t = Time.new(1993, 02, 24, 12, 0, 0, "+09:00")</syntaxhighlight> | بمجرد أن تُنشئ توقيتًا (نسخة من الصنف <code>Time</code>)، فهناك العديد من الأشياء التي يمكنك القيام بها. فيما يلي بعض الأمثلة. | ||
هل t يتوافق مع يوم الاثنين؟ | |||
<syntaxhighlight lang="ruby">t.monday? #=> false</syntaxhighlight> | في جميع الأمثلة التالية، سنفترض أنك قمت بما يلي:<syntaxhighlight lang="ruby">t = Time.new(1993, 02, 24, 12, 0, 0, "+09:00")</syntaxhighlight>هل <code>t</code> يتوافق مع يوم الاثنين؟<syntaxhighlight lang="ruby">t.monday? #=> false</syntaxhighlight>أي عام هو هذا؟<syntaxhighlight lang="ruby">t.year #=> 1993</syntaxhighlight>هل <code>t</code> توقيت صيفي؟<syntaxhighlight lang="ruby">t.dst? #=> false</syntaxhighlight>ما هو اليوم الذي يوافق عامًا بعد <code>t</code>؟<syntaxhighlight lang="ruby">t + (60*60*24*365) #=> 1994-02-24 12:00:00 +0900</syntaxhighlight>كم عدد الثواني منذ [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>t</code>؟<syntaxhighlight lang="ruby">t.to_i #=> 730522800</syntaxhighlight>يمكنك أيضًا القيام بالعمليات والوظائف العادية، مثل مقارنة توقيتين:<syntaxhighlight lang="ruby">t1 = Time.new(2010) | ||
أي عام هو هذا؟ | |||
<syntaxhighlight lang="ruby">t.year #=> 1993</syntaxhighlight> | |||
<syntaxhighlight lang="ruby">t.dst? #=> false</syntaxhighlight> | |||
ما هو اليوم بعد | |||
<syntaxhighlight lang="ruby">t + (60*60*24*365) #=> 1994-02-24 12:00:00 +0900</syntaxhighlight> | |||
كم عدد الثواني منذ [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 | |||
<syntaxhighlight lang="ruby">t.to_i #=> 730522800</syntaxhighlight> | |||
يمكنك | |||
<syntaxhighlight lang="ruby">t1 = Time.new(2010) | |||
t2 = Time.new(2011) | t2 = Time.new(2011) | ||
t1 == t2 #=> false | t1 == t2 #=> false | ||
سطر 51: | سطر 34: | ||
t1 > t2 #=> false | t1 > t2 #=> false | ||
Time.new(2010,10,31).between?(t1, t2) #=> true</syntaxhighlight> | Time.new(2010,10,31).between?(t1, t2) #=> true</syntaxhighlight> | ||
==توابع الصنف العامة | ==توابع الصنف العامة== | ||
===[[Ruby/Time/at | | ===[[Ruby/Time/at|<code>at</code>]]=== | ||
ينشئ توقيتًا جديدًا انطلاقًا من معلومات الوقت المٌمرَّرة إليه. | |||
===[[Ruby/Time/ | ===[[Ruby/Time/gm|<code>gm</code>]]=== | ||
ينشئ | ينشئ توقيتًا جديدًا استنادًا إلى القيم المعطاة، ويتم تفسيرها وفق التوقيت العالمي الموحد UTC (GMT). | ||
===[[Ruby/Time/ | ===[[Ruby/Time/local|<code>local</code>]]=== | ||
ينشئ توقيتًا جديدًا بشكل مشابه للتابع <code>[[Ruby/Time/gm|gm]]</code> باستثناء أنَّه يفسر القيم في إطار المنطقة الزمنية المحلية. | |||
===[[Ruby/Time/ | ===[[Ruby/Time/mktime|<code>mktime</code>]]=== | ||
ينشئ توقيتًا جديدًا بشكل مشابه للتابع <code>[[Ruby/Time/gm|gm]]</code> باستثناء أنَّه يفسر القيم في إطار المنطقة الزمنية المحلية. | |||
===[[Ruby/Time/new|<code>new</code>]]=== | |||
ينشئ توقيتًا جديدًا. يتم ضبطه عند وقت النظام الحالي إذا لم يُمرر أي وسيط. | |||
===[[Ruby/Time/ | ===[[Ruby/Time/now|<code>now</code>]]=== | ||
يُنشئ توقيتًا جديدًا من الوقت الحالي | |||
===[[Ruby/Time/ | ===[[Ruby/Time/utc|<code>utc</code>]]=== | ||
ينشئ توقيتًا جديدًا استنادًا إلى القيم المعطاة، ويتم تفسيره وفق التوقيت العالمي الموحد UTC (GMT). | |||
===[[Ruby/Time/ | |||
== توابع النسخة العامة == | |||
===[[Ruby/Time/ | |||
===[[Ruby/Time/plus operator|<code>+</code>]]=== | |||
===[[Ruby/Time/ | يضيف عددًا من الثواني (ربما يكون عدد كسري) إلى <nowiki/>[[Ruby/Time|التوقيت]] المعطى، ثم يُعيد تلك القيمة<nowiki/>[[Ruby/Time|كتوقيت]] جديد. | ||
===[[Ruby/Time/minus operator|<code>-</code>]]=== | |||
===[[Ruby/Time/ | يُعيد الفرق بالثانية بين وقتين، أو يطرح عددًا يمثِّل الثواني من التوقيت المعطى. | ||
===[[Ruby/Time/compar operator|<code><=></code>]]=== | |||
===[[Ruby/Time/ | يوازن بين توقيتين. | ||
===[[Ruby/Time/asctime|<code>asctime</code>]]=== | |||
===[[Ruby/ | يُعيد سلسلة نصية أساسية (canonical string) تحوي <nowiki/>توقيت الكائن <code>Time</code> الذي استدعي معه. | ||
===[[Ruby/Time/ctime|<code>ctime</code>]]=== | |||
===[[Ruby/Time/ | يُعيد سلسلة نصية أساسية (canonical string) تحوي <nowiki/>توقيت الكائن <code>Time</code> الذي استدعي معه. | ||
===[[Ruby/Time/day|<code>day</code>]]=== | |||
===[ | يستخلص من <nowiki/>التوقيت رقم اليوم من الشهر (1..n). | ||
===[[Ruby/Time/dst-3F|<code>dst?</code>]]=== | |||
يتحقق إن وقع <nowiki/>التوقيت أثناء التوقيت الصيفي في منطقته الزمنية. | |||
يُعيد | ===[[Ruby/Time/eql-3F|<code>eql?</code>]]=== | ||
يتحقق إذا كان توقيتان متساويين تمامًا. | |||
===[[Ruby/Time/friday-3F|<code>friday?</code>]]=== | |||
===[[Ruby/Time/ | يتحقق إن كان <nowiki/>التوقيت يمثل يوم الجمعة. | ||
===[[Ruby/Time/getgm|<code>getgm</code>]]=== | |||
===[[Ruby/Time/ | يُعيد توقيتًا جديدًا يمثل <nowiki/>التوقيت الذي استُدعي معه بالتوقيت العالمي الموحد (UTC). | ||
===[[Ruby/Time/getlocal|<code>getlocal</code>]]=== | |||
===[[Ruby/Time/ | يُعيد توقيتًا جديدًا يمثل <nowiki/>التوقيت الذي استُدعي معه بالتوقيت المحلي (باستخدام المنطقة الزمنية المحلية السارية لهذه العملية). | ||
===[[Ruby/Time/getutc|<code>getutc</code>]]=== | |||
===[[Ruby/Time/ | يُعيد توقيتًا جديدًا يمثل التوقيت الذي استُدعي معه بالتوقيت العالمي الموحد (UTC). | ||
===[[Ruby/Time/gmt-3F|<code>gmt?</code>]]=== | |||
يتحقق إن كان <nowiki/>التوقيت الذي استدعي معه ممثلًا بالتوقيت العالمي الموحد (UTC). | |||
===[[Ruby/Time/gmt offset|<code>gmt_offset</code>]]=== | |||
===[[Ruby/ | يُعيد الفارق بين المنطقة الزمنية للتوقيت المعطى والتوقيت العالمي الموحد (UTC) بالثانية. | ||
===[[Ruby/Time/gmtime|<code>gmtime</code>]]=== | |||
يحول التوقيت الذي استُدعي معه إلى التوقيت العالمي الموحد (UTC). | |||
===[[Ruby/Time/gmtoff|<code>gmtoff</code>]]=== | |||
يُعيد الفارق بين المنطقة الزمنية للتوقيت الذي استُدعي معه والتوقيت العالمي الموحد (UTC) بالثانية. | |||
===[[Ruby/Time/hash|<code>hash</code>]]=== | |||
يُعيد القيمة hash للتوقيت الذي استدعي معه. | |||
===[[Ruby/Time/hour|<code>hour</code>]]=== | |||
===[[Ruby/Time/ | يُستخلص من التوقيت رقم الساعة لليوم. | ||
===[[Ruby/Time/inspect|<code>inspect</code>]]=== | |||
يُعيد [[Ruby/String|سلسلة نصية]] تمثل التوقيت الذي استدعي معه. | |||
===[[Ruby/Time/isdst|<code>isdst</code>]]=== | |||
===[ | يتحقق إن وقع التوقيت الذي استُدعي معه أثناء التوقيت الصيفي في منطقته الزمنية. | ||
===[[Ruby/Time/localtime|<code>localtime</code>]]=== | |||
يحول التوقيت الذي استُدعي معه إلى التوقيت المحلي (باستخدام المنطقة الزمنية المحلية السارية لهذه العملية). | |||
===[[Ruby/Time/mday|<code>mday</code>]]=== | |||
يستخلص من التوقيت الذي استدعي معه رقم اليوم من الشهر. | |||
===[[Ruby/Time/min|<code>min</code>]]=== | |||
===[ | يستخلص من التوقيت الذي استدعي معه رقم الدقيقة من الساعة. | ||
===[[Ruby/Time/mon|<code>mon</code>]]=== | |||
===[[Ruby/Time/ | يستخلص من التوقيت الذي استدعي معه رقم الشهر من السنة. | ||
===[[Ruby/Time/monday-3F|<code>monday?</code>]]=== | |||
===[[Ruby/Time/ | يتحقق إن كان <nowiki/>التوقيت يمثل يوم الاثنين. | ||
===[[Ruby/Time/month|<code>month</code>]]=== | |||
===[[Ruby/Time/ | يستخلص من التوقيت الذي استدعي معه رقم الشهر من السنة. | ||
===[[Ruby/Time/nsec|<code>nsec</code>]]=== | |||
===[[Ruby/Time/ | يُعيد النانو ثانية المقابل للتوقيت الذي مر منذ [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 توقيت يونيكس]. | ||
يُعيد | ===[[Ruby/Time/round|<code>round</code>]]=== | ||
=== | يُقرّب الأجزاء العشرية من الثواني وفق دقة معينة من المنازل العشرية للتوقيت الذي استدعي معه. | ||
===[[Ruby/Time/saturday-3F|<code>saturday?</code>]]=== | |||
يتحقق إن كان <nowiki/>التوقيت يمثل يوم السبت. | |||
===[[Ruby/Time/sec|<code>sec</code>]]=== | |||
يستخلص من التوقيت رقم الثانية في الدقيقة. | |||
===[[Ruby/Time/strftime|<code>strftime</code>]]=== | |||
يُنسق التوقيت الذي استدعي معه وفقًا للموجّهات (directives) الموجودة في سلسلة التنسيق المُمرَّرة إليه. | |||
===[[Ruby/Time/subsec|<code>subsec</code>]]=== | |||
يُعيد الجزء العشري للثانية من التوقيت الذي استدعي معه. | |||
===[[Ruby/Time/succ|<code>succ</code>]]=== | |||
يُعيد توقيتا جديدًا، مع إضافة ثانية واحدة على التوقيت الذي استُدعي معه. | |||
===[[Ruby/Time/sunday-3F|<code>sunday?</code>]]=== | |||
يتحقق إن كان <nowiki/>التوقيت يمثل يوم الأحد. | |||
===[[Ruby/Time/thursday-3F|<code>thursday?</code>]]=== | |||
يتحقق إن كان التوقيت يمثل يوم الخميس. | |||
===[[Ruby/Time/to a|<code>to_a</code>]]=== | |||
يحول التوقيت الذي استدعي معه إلى <nowiki/>[[Ruby/Array|مصفوفة]]. | |||
===[[Ruby/Time/to f|<code>to_f</code>]]=== | |||
يحول قيمة التوقيت المعطى إلى عدد عشري يمثل عدد الثواني التي مرَّت منذ [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 توقيت يونكس]. | |||
===[[Ruby/Time/to i|<code>to_i</code>]]=== | |||
يحول قيمة التوقيت المعطى إلى <nowiki/>[[Ruby/Integer|عدد صحيح]] يمثل الثواني التي مرت منذ [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 توقيت يونكس]. | |||
===[[Ruby/Time/to r|<code>to_r</code>]]=== | |||
يحول قيمة التوقيت المعطى إلى <nowiki/>[[Ruby/Rational|عدد جذري]] يمثل عدد الثواني التي مرت منذ [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 توقيت يونكس]. | |||
===[[Ruby/Time/to s|<code>to_s</code>]]=== | |||
يحول التوقيت المعطى إلى <nowiki/>[[Ruby/String|سلسلة نصية]]. | |||
===[[Ruby/Time/tuesday-3F|<code>tuesday?</code>]]=== | |||
يتحقق إن كان <nowiki/>التوقيت يمثل يوم الخميس. | |||
===[[Ruby/Time/tv nsec|<code>tv_nsec</code>]]=== | |||
يُعيد عدد النانوثواني المقابلة للتوقيت المعطى التي مرت منذ [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 توقيت يونيكس]. | |||
===[[Ruby/Time/tv sec|<code>tv_sec</code>]]=== | |||
يُعيد القيمة المقابلة للتوقيت التي تمثل عدد الثواني التي مرت منذ [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 توقيت يونيكس]. | |||
===[[Ruby/Time/tv usec|<code>tv_usec</code>]]=== | |||
يُعيد المقابلة للتوقيت التي تمثل عدد الميكروثواني التي مرت منذ [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 توقيت يونيكس]. | |||
===[[Ruby/Time/usec|<code>usec</code>]]=== | |||
يُعيد القيمة المقابلة للتوقيت التي تمثل عدد الميكروثواني التي مرت منذ [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 توقيت يونيكس]. | |||
===[[Ruby/Time/utc|<code>utc</code>]]=== | |||
يحول التوقيت إلى التوقيت العالمي الموحد (UTC). | |||
===[[Ruby/Time/utc-3F|<code>utc?</code>]]=== | |||
يتحقق إن كان التوقيت الذي استُدعي معه يمثل توقيتًا في النطاق العالمي الموحد UTC (GMT). | |||
===[[Ruby/Time/utc offset|<code>utc_offset</code>]]=== | |||
يُعيد الفارق بين المنطقة الزمنية للتوقيت والتوقيت العالمي الموحد UTC بالثانية. | |||
===[[Ruby/Time/wday|<code>wday</code>]]=== | |||
يُعيد عددًا صحيحًا يمثل رقم اليوم في الأسبوع للتوقيت الذي استدعي معه. | |||
===[[Ruby/Time/wednesday-3F|<code>wednesday?</code>]]=== | |||
يتحقق إن كان <nowiki/>التوقيت يمثل يوم الأربعاء. | |||
===[[Ruby/Time/yday|<code>yday</code>]]=== | |||
يُعيد عددًا صحيحًا يمثل رقم اليوم في السنة للتوقيت الذي استدعي معه. | |||
يعيد | ===[[Ruby/Time/year|<code>year</code>]]=== | ||
يستخلص من التوقيت الذي استُدعي معه قيمة السنة (بما في ذلك القرن). | |||
===[[Ruby/Time/zone|<code>zone</code>]]=== | |||
يعيد اسم المنطقة الزمنية المستخدمة في <nowiki/>[[Ruby/Time|التوقيت]] الذي استدعي معه. | |||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Time.html | *[http://ruby-doc.org/core-2.5.1/Time.html صفحة الصنف Time في توثيق روبي الرسمي.] |
المراجعة الحالية بتاريخ 17:16، 7 ديسمبر 2018
الصنف Time
هو تجريد لمفهومي التاريخ والوقت. يتم تخزين Time
داخليا كعدد الثواني (مع كسورها) منذ توقيت يونيكس (1 يناير 1970 00:00 بالتوقيت العالمي). انظر أيضًا الوحدة Date
لمزيد من المعلومات.
يعامِل الصنف Time
توقيت جرينتش (GMT، اختصار للعبارة Greenwich Mean Time) والتوقيت العالمي الموحد (UTC، اختصار للعبارة Universal Time Coordinated) على أنهما متكافئان. توقيت جرينتش هو الطريقة الأقدم للإشارة إلى هذه الأوقات المرجعية، ولا تزال موجودة في أسماء الاستدعاءات على أنظمة POSIX.
يمكن أن يكون لجميع الأوقات كسور. انتبه لهذا الأمر عند مقارنة الأوقات مع بعضها البعض؛ فالأوقات التي تبدو متساوية عند عرضها، قد تكون مختلفة عند المقارنة.
منذ روبي 1.9.2، يستخدم الصنف Time
عددًا صحيحًا ذا إشارة بحجم 63 بت أو عددًا من النوع Bignum
أو Rational
. العدد الصحيح يمثل عدد النانوثواني منذ بدء توقيت يونيكس، والتي يمكن أن تمثل 1823-11-12 بالقيمة 2116-02-20. عند استخدام Bignum
أو Rational
(قبل 1823، وبعد 2116، بالنانوثانية) ، يعمل الصنف Time
بشكل أبطأ مقارنة باستخدام الأعداد الصحيحة.
الأمثلة
كل الأمثلة الموجودة في صفحات التوابع تعمل باستخدام المنطقة الزمنية EST (التوقيت الشرقي القياسي [Eastern Standard Time]) والتي تساوي GMT-5 بتوقيت غرينتش.
إنشاء توقيت جديد
يمكنك إنشاء توقيت جديد (نسخة من الصنف Time
) عبر التابع new
، إذ سيستخدم الوقت الحالي في النظام. التابع now
هو اسم بديل للمتغير this
. يمكنك أيضًا تمرير أجزاء من الوقت إلى new
، مثل السنة والشهر والدقيقة وما إلى ذلك. عندما تريد إنشاء توقيت بهذا التابع، فيجب أن تمرر السنة على الأقل. إذا مررت السنة وحدها، فسيتم تعيين الوقت الافتراضي لبقية القيم عند الشهر يناير/كانون الثاني من بداية ذلك العام على الساعة 00:00:00 بتوقيت المنطقة الزمنية الحالية للنظام.
إليك بعض الأمثلة:
Time.new(2002) #=> 2002-01-01 00:00:00 -0500
Time.new(2002, 10) #=> 2002-10-01 00:00:00 -0500
Time.new(2002, 10, 31) #=> 2002-10-31 00:00:00 -0500
Time.new(2002, 10, 31, 2, 2, 2, "+02:00") #=> 2002-10-31 02:02:02 +0200
يمكنك أيضًا استخدام التوابع gm
و local
و utc
لاعتماد المناطق الزمنية لغرينتش أو التوقيت المحلي أو التوقيت العالمي بدلًا من استخدام إعدادات النظام الحالي.
يمكنك أيضًا إنشاء توقيت جديد باستخدام at
، والذي يأخذ عدد الثواني (أو أعشار الثواني) منذ بدء توقيت يونيكس.
Time.at(628232400) #=> 1989-11-28 00:00:00 -0500
العمل مع التوقيتات
بمجرد أن تُنشئ توقيتًا (نسخة من الصنف Time
)، فهناك العديد من الأشياء التي يمكنك القيام بها. فيما يلي بعض الأمثلة.
في جميع الأمثلة التالية، سنفترض أنك قمت بما يلي:
t = Time.new(1993, 02, 24, 12, 0, 0, "+09:00")
هل t
يتوافق مع يوم الاثنين؟
t.monday? #=> false
أي عام هو هذا؟
t.year #=> 1993
هل t
توقيت صيفي؟
t.dst? #=> false
ما هو اليوم الذي يوافق عامًا بعد t
؟
t + (60*60*24*365) #=> 1994-02-24 12:00:00 +0900
كم عدد الثواني منذ توقيت يونيكس وحتى t
؟
t.to_i #=> 730522800
يمكنك أيضًا القيام بالعمليات والوظائف العادية، مثل مقارنة توقيتين:
t1 = Time.new(2010)
t2 = Time.new(2011)
t1 == t2 #=> false
t1 == t1 #=> true
t1 < t2 #=> true
t1 > t2 #=> false
Time.new(2010,10,31).between?(t1, t2) #=> true
توابع الصنف العامة
at
ينشئ توقيتًا جديدًا انطلاقًا من معلومات الوقت المٌمرَّرة إليه.
gm
ينشئ توقيتًا جديدًا استنادًا إلى القيم المعطاة، ويتم تفسيرها وفق التوقيت العالمي الموحد UTC (GMT).
local
ينشئ توقيتًا جديدًا بشكل مشابه للتابع gm
باستثناء أنَّه يفسر القيم في إطار المنطقة الزمنية المحلية.
mktime
ينشئ توقيتًا جديدًا بشكل مشابه للتابع gm
باستثناء أنَّه يفسر القيم في إطار المنطقة الزمنية المحلية.
new
ينشئ توقيتًا جديدًا. يتم ضبطه عند وقت النظام الحالي إذا لم يُمرر أي وسيط.
now
يُنشئ توقيتًا جديدًا من الوقت الحالي
utc
ينشئ توقيتًا جديدًا استنادًا إلى القيم المعطاة، ويتم تفسيره وفق التوقيت العالمي الموحد UTC (GMT).
توابع النسخة العامة
+
يضيف عددًا من الثواني (ربما يكون عدد كسري) إلى التوقيت المعطى، ثم يُعيد تلك القيمةكتوقيت جديد.
-
يُعيد الفرق بالثانية بين وقتين، أو يطرح عددًا يمثِّل الثواني من التوقيت المعطى.
<=>
يوازن بين توقيتين.
asctime
يُعيد سلسلة نصية أساسية (canonical string) تحوي توقيت الكائن Time
الذي استدعي معه.
ctime
يُعيد سلسلة نصية أساسية (canonical string) تحوي توقيت الكائن Time
الذي استدعي معه.
day
يستخلص من التوقيت رقم اليوم من الشهر (1..n).
dst?
يتحقق إن وقع التوقيت أثناء التوقيت الصيفي في منطقته الزمنية.
eql?
يتحقق إذا كان توقيتان متساويين تمامًا.
friday?
يتحقق إن كان التوقيت يمثل يوم الجمعة.
getgm
يُعيد توقيتًا جديدًا يمثل التوقيت الذي استُدعي معه بالتوقيت العالمي الموحد (UTC).
getlocal
يُعيد توقيتًا جديدًا يمثل التوقيت الذي استُدعي معه بالتوقيت المحلي (باستخدام المنطقة الزمنية المحلية السارية لهذه العملية).
getutc
يُعيد توقيتًا جديدًا يمثل التوقيت الذي استُدعي معه بالتوقيت العالمي الموحد (UTC).
gmt?
يتحقق إن كان التوقيت الذي استدعي معه ممثلًا بالتوقيت العالمي الموحد (UTC).
gmt_offset
يُعيد الفارق بين المنطقة الزمنية للتوقيت المعطى والتوقيت العالمي الموحد (UTC) بالثانية.
gmtime
يحول التوقيت الذي استُدعي معه إلى التوقيت العالمي الموحد (UTC).
gmtoff
يُعيد الفارق بين المنطقة الزمنية للتوقيت الذي استُدعي معه والتوقيت العالمي الموحد (UTC) بالثانية.
hash
يُعيد القيمة hash للتوقيت الذي استدعي معه.
hour
يُستخلص من التوقيت رقم الساعة لليوم.
inspect
يُعيد سلسلة نصية تمثل التوقيت الذي استدعي معه.
isdst
يتحقق إن وقع التوقيت الذي استُدعي معه أثناء التوقيت الصيفي في منطقته الزمنية.
localtime
يحول التوقيت الذي استُدعي معه إلى التوقيت المحلي (باستخدام المنطقة الزمنية المحلية السارية لهذه العملية).
mday
يستخلص من التوقيت الذي استدعي معه رقم اليوم من الشهر.
min
يستخلص من التوقيت الذي استدعي معه رقم الدقيقة من الساعة.
mon
يستخلص من التوقيت الذي استدعي معه رقم الشهر من السنة.
monday?
يتحقق إن كان التوقيت يمثل يوم الاثنين.
month
يستخلص من التوقيت الذي استدعي معه رقم الشهر من السنة.
nsec
يُعيد النانو ثانية المقابل للتوقيت الذي مر منذ توقيت يونيكس.
round
يُقرّب الأجزاء العشرية من الثواني وفق دقة معينة من المنازل العشرية للتوقيت الذي استدعي معه.
saturday?
يتحقق إن كان التوقيت يمثل يوم السبت.
sec
يستخلص من التوقيت رقم الثانية في الدقيقة.
strftime
يُنسق التوقيت الذي استدعي معه وفقًا للموجّهات (directives) الموجودة في سلسلة التنسيق المُمرَّرة إليه.
subsec
يُعيد الجزء العشري للثانية من التوقيت الذي استدعي معه.
succ
يُعيد توقيتا جديدًا، مع إضافة ثانية واحدة على التوقيت الذي استُدعي معه.
sunday?
يتحقق إن كان التوقيت يمثل يوم الأحد.
thursday?
يتحقق إن كان التوقيت يمثل يوم الخميس.
to_a
يحول التوقيت الذي استدعي معه إلى مصفوفة.
to_f
يحول قيمة التوقيت المعطى إلى عدد عشري يمثل عدد الثواني التي مرَّت منذ توقيت يونكس.
to_i
يحول قيمة التوقيت المعطى إلى عدد صحيح يمثل الثواني التي مرت منذ توقيت يونكس.
to_r
يحول قيمة التوقيت المعطى إلى عدد جذري يمثل عدد الثواني التي مرت منذ توقيت يونكس.
to_s
يحول التوقيت المعطى إلى سلسلة نصية.
tuesday?
يتحقق إن كان التوقيت يمثل يوم الخميس.
tv_nsec
يُعيد عدد النانوثواني المقابلة للتوقيت المعطى التي مرت منذ توقيت يونيكس.
tv_sec
يُعيد القيمة المقابلة للتوقيت التي تمثل عدد الثواني التي مرت منذ توقيت يونيكس.
tv_usec
يُعيد المقابلة للتوقيت التي تمثل عدد الميكروثواني التي مرت منذ توقيت يونيكس.
usec
يُعيد القيمة المقابلة للتوقيت التي تمثل عدد الميكروثواني التي مرت منذ توقيت يونيكس.
utc
يحول التوقيت إلى التوقيت العالمي الموحد (UTC).
utc?
يتحقق إن كان التوقيت الذي استُدعي معه يمثل توقيتًا في النطاق العالمي الموحد UTC (GMT).
utc_offset
يُعيد الفارق بين المنطقة الزمنية للتوقيت والتوقيت العالمي الموحد UTC بالثانية.
wday
يُعيد عددًا صحيحًا يمثل رقم اليوم في الأسبوع للتوقيت الذي استدعي معه.
wednesday?
يتحقق إن كان التوقيت يمثل يوم الأربعاء.
yday
يُعيد عددًا صحيحًا يمثل رقم اليوم في السنة للتوقيت الذي استدعي معه.
year
يستخلص من التوقيت الذي استُدعي معه قيمة السنة (بما في ذلك القرن).
zone
يعيد اسم المنطقة الزمنية المستخدمة في التوقيت الذي استدعي معه.