کلاس Time

کلاس Time در Ruby به شما اجازه استفاده، ذخیره، و دستکاری ساعت و تاریخ را می‌دهد. این ساختار دارای متدهایی برای دستکاری تاریخ مانند اضافه و کم کردن روزها، ماه‌ها، یا سال‌ها و مطابق کردن آنها با تاریخ جاری را می‌دهند. همچنین دارای متدهایی است که تاریخ را به اشکال متفاوتی نشان می‌دهند. این کلاس نمی تواند تاریخ های قبل از سال 1970 و بعد از سال 2038 را نمایش دهد. برای استفاده از کلاس Time، همانند سایر کلاس ها ابتدا باید یک شیء از آن ایجاد کنید:

time = Time.new

بعد از ایجاد شیء می توانید از متدهای این کلاس که لیست آنها در جدول زیر آمده است، استفاده کنید:

خاصیت کاربرد
ctime برای نمایش کامل تاریخ و ساعت استفاده می شود.
year برای نمایش سال به کار می‌رود.
month برای نمایش ماه به کار می‌رود.
day برای نمایش روز به کار می‌رود.
wday نشان می‌دهد که چندمین روز هفته جاری است.
yday نشان می‌دهد که چندمین روز سال جاری است.
hour برای نمایش ساعت به کار می‌رود.
min برای نمایش دقیه به کار می‌رود.
sec برای نمایش ثانیه به کار می‌رود.
usec برای نمایش میلی ثانیه به کار می‌رود.
zone برای نمایش منطقه زمانی به کار می‌رود.

به نحوه استفاده از کلاس Time و متدهای آن توجه کنید:

1 time = Time.new
2 
3 puts "Full date and time: #{time.ctime}"
4 puts "Year              : #{time.year} "
5 puts "Month             : #{time.month}"
6 puts "Day               : #{time.day}  "
7 puts "Day of week       : #{time.wday} "
8 puts "Day of year       : #{time.yday} "
9 puts "Hour              : #{time.hour} "
10 puts "Minute            : #{time.min}  "
11 puts "Second            : #{time.sec}  "
12 puts "Microseconds      : #{time.usec} "
13 puts "Timezone name     : #{time.zone} "
Full date and time: Thu Aug 13 16:45:42 2020
Year              : 2020
Month             : 8
Day               : 13
Day of week       : 4
Day of year       : 226
Hour              : 16
Minute            : 45
Second            : 42
Microseconds      : 871276
Timezone name     : Iran Daylight Time

در کد بالا و در خط 3، تاریخ کامل فعلی را به دست آورده ایم که 13 آگوست 2020 می باشد (ممکن است برای شما این تاریخ متفاوت باشد). اگر بخواهیم بدانیم که 13 آگوست، چندمین روز سال است، این کار را به راحتی و با استفاده از متد yday امکان پذیر است. این متد در کد بالا عدد 226 را نشان می دهد، که نشان دهنده این است که، 13 آگوست، 226 مین روز سال است. یکی دیگر از متدهای کلاس Time، متد now است که از آن برای به دست آوردن تاریخ فعلی استفاده می شود. برای استفاده از این متد کافیست به جای متد new در ابتدای درس، از کلمه now استفاده کنید:

time = Time.now

puts time
2020-08-13 22:56:39 +0430

قالب بندی تاریخ و زمان

کلاس Time دارای متد ()strftime برای قالب بندی تاریخ و زمان، جهت نمایش خواناتر آن‌ها می‌باشد. در حالت پیشفرض خروجی متد now به صورت YYYY-MM-DDTHH:MM:SS می‌باشد. حال ممکن است که ما بخواهیم مثلاً تاریخ را به صورت 2018/06/22 نمایش دهیم. در این صورت متد ()strftime به کار برده می‌شوند. این متد برای قالب بندی تاریخ از کاراکترهایی استفاده می‌کند که در زیر به آنها اشاره شده است:

کاراکتر توضیح مثال
a% برای نمایش نام روز هفته به صورت کوتاه، به کار می‌رود. Wed
A% برای نمایش نام روز هفته به صورت کامل، به کار می‌رود. Wednesday
w% برای نمایش عدد معادل روز هفته به کار می‌رود. مثلاً 0 یعنی روز یکشنبه. 3
d% برای نمایش روز از ماه به صورت عددی دو رقمی به کار می‌رود (31-01) 31
b% برای نمایش نام ماه به صورت کوتاه، به کار می‌رود. Dec
B% برای نمایش نام ماه به صورت کوتاه، به کار می‌رود. December
m% ماه را به صورت یک عدد دو رقمی (12-01) نمایش می‌دهد. 12
y% سال را به صورت عدد دو رقمی نمایش می‌دهد. مثلاً سال 2018 را به صورت 18 نمایش می‌دهد. 18
Y% سال را به صورت کامل نمایش می‌دهد. 2018
H% ساعت را به صورت عدد دو رقمی (23-00) نمایش می‌دهد. 17
I% ساعت را به صورت عدد دو رقمی (12-00) نمایش می‌دهد. 05
p% برای نمایش بعد از ظهر/قبل از ظهر به کار می‌رود. PM
M% دقیقه را به صورت عدد دو رقمی (59-00) نمایش می‌دهد. 41
S% ثانیه را به صورت عدد دو رقمی (59-00) نمایش می‌دهد. 08
%f% برای نمایش میلی ثانیه (000000-999999) به کار می‌رود. 548513
z% برای نمایش اختلاف زمانی به کار می‌رود. +0100
Z% ساعت محلی را نشان می‌دهد. CST
j% عدد روز در سال را نشان می‌دهد (365-01). 365
U% عدد هفته در سال را نشان می‌دهد (53-00) اگر اول روز هفته یکشنبه باشد. 52
W% عدد هفته در سال را نشان می‌دهد (53-00) اگر اول روز هفته دوشنبه باشد. 52
c% نسخه محلی تاریخ و زمان را نشان می‌دهد. Mon Dec 31 17:41:00 2018
x% نسخه محلی تاریخ را نشان می‌دهد. 12/31/18
X% نسخه محلی ساعت را نشان می‌دهد. 17:41:00
%% کاراکتر % را نشان می‌دهد. %

به مثال زیر توجه کنید:

time = Time.now

puts time.strftime("%Y/%m/%d")
2020/08/13

همانطور که در کد بالا مشاهده می‌کنید، با ارسال کارکترهای جدول بالا به متد ()strftime می‌توانیم به صورت دلخواه و سفارشی، تاریخ و زمان را نشان دهیم. شما می‌توانید به جای کاراکترهای کد بالا، کاراکترهای دیگری را به این متد ارسال و با اجرای برنامه نتیجه را مشاهده کنید.