کلاس 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 میتوانیم به صورت دلخواه و سفارشی، تاریخ و زمان را نشان دهیم. شما میتوانید به جای کاراکترهای کد بالا، کاراکترهای دیگری را به این متد ارسال و با اجرای برنامه نتیجه را مشاهده کنید.