روبي التاريخ والوقت (التاريخ والوقت)
الطبقةالوقت في روبي لتمثيل التاريخ والوقت.وهو يستند إلى نظام التشغيل يوفر نظام التاريخ والوقت. هذه الفئة لا يشير التاريخ قبل عام 1970 أو بعد 2038.
هذا البرنامج التعليمي سوف تعريف لكم مع كل المفاهيم الهامة من التاريخ والوقت.
إنشاء التاريخ والوقت الحالي
هنا مثال بسيط للحصول على التاريخ والوقت الحالي:
أمثلة
# - * - الترميز: UTF-8 - * -
TIME1 = Time.new
يضع "الوقت الحالي" + time1.inspect
# Time.now نفس الوظيفة
TIME2 = Time.now
يضع "الوقت الحالي" + time2.inspect
تشغيل المثال »
تشغيل إخراج المثال أعلاه هو:
当前时间 : 2015-09-17 15:23:14 +0800 当前时间 : 2015-09-17 15:23:14 +0800
يحصل التاريخ والوقت مكونات
يمكننا استخدام الكائنالوقتللحصول على التاريخ والوقت من المكونات المختلفة. النظر في الأمثلة التالية:
#!/usr/bin/ruby -w # -*- coding: UTF-8 -*- time = Time.new # Time 的组件 puts "当前时间 : " + time.inspect puts time.year # => 日期的年份 puts time.month # => 日期的月份(1 到 12) puts time.day # => 一个月中的第几天(1 到 31) puts time.wday # => 一周中的星期几(0 是星期日) puts time.yday # => 365:一年中的第几天 puts time.hour # => 23:24 小时制 puts time.min # => 59 puts time.sec # => 59 puts time.usec # => 999999:微秒 puts time.zone # => "UTC":时区名称
تشغيل إخراج المثال أعلاه هو:
当前时间 : 2015-09-17 15:24:44 +0800 2015 9 17 4 260 15 24 44 921519 CST
Time.utc،Time.gm وظيفةTime.local
ويمكن استخدام هذه الوظائف لتنسيق تنسيق التاريخ القياسية، على النحو التالي:
# July 8, 2008 Time.local(2008, 7, 8) # July 8, 2008, 09:10am,本地时间 Time.local(2008, 7, 8, 9, 10) # July 8, 2008, 09:10 UTC Time.utc(2008, 7, 8, 9, 10) # July 8, 2008, 09:10:11 GMT (与 UTC 相同) Time.gm(2008, 7, 8, 9, 10, 11)
الأمثلة التالية الحصول على جميع المكونات في مجموعة:
[sec,min,hour,day,month,year,wday,yday,isdst,zone]
جرب الأمثلة التالية:
#!/usr/bin/ruby -w time = Time.new values = time.to_a p values
تشغيل إخراج المثال أعلاه هو:
[39, 25, 15, 17, 9, 2015, 4, 260, false, "CST"]
مجموعة يمكن أن تنتقلTime.utcأو وظيفةTime.localللحصول على شكل تاريخ مختلف، على النحو التالي:
#!/usr/bin/ruby -w time = Time.new values = time.to_a puts Time.utc(*values)
تشغيل إخراج المثال أعلاه هو:
2015-09-17 15:26:09 UTC
هنا هو طريقة للحصول على الوقت، وعدد الثواني منذ عهد (منصة تعتمد):
# 返回从纪元以来的秒数 time = Time.now.to_i # 把秒数转换为 Time 对象 Time.at(time) # 返回从纪元以来的秒数,包含微妙 time = Time.now.to_f
المنطقة الزمنية والتوقيت الصيفي
يمكنك استخدام الكائنالوقتللحصول على كل المعلومات والمنطقة الزمنية والتوقيت الصيفي ذات الصلة على النحو التالي:
time = Time.new # 这里是解释 time.zone # => "UTC":返回时区 time.utc_offset # => 0:UTC 是相对于 UTC 的 0 秒偏移 time.zone # => "PST"(或其他时区) time.isdst # => false:如果 UTC 没有 DST(夏令时) time.utc? # => true:如果在 UTC 时区 time.localtime # 转换为本地时区 time.gmtime # 转换回 UTC time.getlocal # 返回本地区中的一个新的 Time 对象 time.getutc # 返回 UTC 中的一个新的 Time 对象
تنسيق الوقت والتاريخ
هناك عدة طرق لتنسيق التاريخ والوقت. يوضح المثال التالي جزء:
#!/usr/bin/ruby -w time = Time.new puts time.to_s puts time.ctime puts time.localtime puts time.strftime("%Y-%m-%d %H:%M:%S")
تشغيل إخراج المثال أعلاه هو:
2015-09-17 15:26:42 +0800 Thu Sep 17 15:26:42 2015 2015-09-17 15:26:42 +0800 2015-09-17 15:26:42
تعليمات تنسيق الوقت
طريقة التدريس استخدامها جنبا إلى جنب معTime.strftimeالمدرجة في الجدول التالي.
指令 | 描述 |
---|---|
%a | 星期几名称的缩写(比如 Sun)。 |
%A | 星期几名称的全称(比如 Sunday)。 |
%b | 月份名称的缩写(比如 Jan)。 |
%B | 月份名称的全称(比如 January)。 |
%c | 优选的本地日期和时间表示法。 |
%d | 一个月中的第几天(01 到 31)。 |
%H | 一天中的第几小时,24 小时制(00 到 23)。 |
%I | 一天中的第几小时,12 小时制(01 到 12)。 |
%j | 一年中的第几天(001 到 366)。 |
%m | 一年中的第几月(01 到 12)。 |
%M | 小时中的第几分钟(00 到 59)。 |
%p | 子午线指示(AM 或 PM)。 |
%S | 分钟中的第几秒(00 或 60)。 |
%U | 当前年中的周数,从第一个星期日(作为第一周的第一天)开始(00 到 53)。 |
%W | 当前年中的周数,从第一个星期一(作为第一周的第一天)开始(00 到 53)。 |
%w | 一星期中的第几天(Sunday 是 0,0 到 6)。 |
%x | 只有日期没有时间的优先表示法。 |
%X | 只有时间没有日期的优先表示法。 |
%y | 不带世纪的年份表示(00 到 99)。 |
%Y | 带有世纪的年份。 |
%Z | 时区名称。 |
%% | % 字符。 |
الوقت خوارزمية
يمكنك استخدام الوقت للقيام ببعض العمليات الحسابية البسيطة، على النحو التالي:
now = Time.now # 当前时间 puts now past = now - 10 # 10 秒之前。Time - number => Time puts past future = now + 10 # 从现在开始 10 秒之后。Time + number => Time puts future diff = future - now # => 10 Time - Time => 秒数 puts diff
تشغيل إخراج المثال أعلاه هو:
2015-09-17 15:27:08 +0800 2015-09-17 15:26:58 +0800 2015-09-17 15:27:18 +0800 10.0