با سلام خدمت کاربران گرامی سایت پی وی لرن و کاربرانی که علاقمندان به دوره آموزشی پرل Perl. در جلسه گذشته آموزش کار اپراتورها در پرل را به صورت مفصل و جزئی آموختیم و انواع اپراتور های Arithmetic Operators،Equality Operators،Logical Operators،Assignment Operators،Bitwise Operators،Logical Operators Quote-like Operators و Miscellaneous Operators را معرفی و بررسی نمودیم.در این جلسه آموزش کار با زمان و تاریخ در پرل و شاخصه های زمان و تاریخ آن را به علاقمندان این دوره ارائه می نماییم.
در طی جلسه آموزش کار با زمان و تاریخ در پرل به درک قابل قبولی از این دو در پرل خواهید رسید و در پایان دوره به خواهید توانست که به راحتی به پردازش و کار با زمان و تاریخ در زبان پرل بپردازید.
بیاید کار را با تابع ()localtime شروع نماییم که مقادیر را برای زمان و تاریخ فعلی در صورتی که argument وجود نداشته باشد بازگردانی می نماید.
در ادامه می توانید لیستی از ۹ عنصری که توسط تابع ()localtime بازگردانی می شود را ببینید.
1 2 3 4 5 6 7 8 9 | sec, # seconds of minutes from 0 to 61 min, # minutes of hour from 0 to 59 hour, # hours of day from 0 to 24 mday, # day of month from 1 to 31 mon, # month of year from 0 to 11 year, # year since 1900 wday, # days since sunday yday, # days since January 1st isdst # hours of daylight savings time |
مثال زیر را برای پرینت عناصر مختلف باز شده توسط تابع ()localtime امتحان کنید.
1 2 3 4 5 6 7 | #!/usr/local/bin/perl @months = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ); @days = qw(Sun Mon Tue Wed Thu Fri Sat Sun); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(); print "$mday $months[$mon] $days[$wday]\n"; |
اجرای کد بالا خروجی به شکل زیر خواهد داشت.
1 | 16 Feb Sat |
اگر از تابع()localtime در context اسکالر استفاده می کنید، تاریخ و زمان را متناسب با منطقه زمانی فعلی شما در سیستم باز می گردانی می شود.
از مثال زیر برای پرینت تاریخ و زمان فعلی به شکل فرمت کامل استفاده نمایید.
1 2 3 4 | #!/usr/local/bin/perl $datestring = localtime(); print "Local date and time $datestring\n"; |
اجرای کد بالا خروجی به شکل زیر خواهد داشت.
1 | Local date and time Sat Feb 16 06:50:45 2013 |
تابع ()gmtime همانند تابع ()localtime کار می کند، اما مقادیر بازگشتی برای منطقه زمانی استاندارد گرینویچ تنظیم می نماید.
هنگام فراخوانی آن در متن لیست isdst$ که آخرین مقدار بازگشتی توسط gmtime است همیشه برابر ۰ خواهد بود.
در GMT هیچ زمان ذخیره شده ای مبتنی بر Daylight جود ندارد.
توجه داشته باشید که ()localtime زمان محلی فعلی را در دستگاهی که اسکریپت را اجرا می کند بازگردانی می کند اما ()gmtime میانگین زمان گرینویچ جهانی یا GMT (یا UTC) را بازگردانی می نماید.
از مثال زیر برای پرینت تاریخ و زمان فعلی در مقیاس GMT استفاده نمایید.
1 2 3 4 | #!/usr/local/bin/perl $datestring = gmtime(); print "GMT date and time $datestring\n"; |
اجرای کد بالا خروجی به شکل زیر خواهد داشت.
1 | GMT date and time Sat Feb 16 13:50:45 2013 |
در ادامه آموزش کار با زمان و تاریخ در پرل شما را با فرمت این دو عنصر آشنا می نماییم.
علاوه بر این که می توان از تابع ()localtime برای به دست آوردن ۹ عنصر مذکور استفاده نمود می توانید از تابع ()printf برای فرمت کردن زمان و تاریخ به شکلی مورد نیاز شما و برنامه تان است استفاده کنید.
1 2 3 4 5 6 | #!/usr/local/bin/perl ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(); printf("Time Format - HH:MM:SS\n"); printf("%02d:%02d:%02d", $hour, $min, $sec); |
اجرای کد بالا خروجی به شکل زیر خواهد داشت.
1 2 | Time Format - HH:MM:SS 06:58:52 |
می توان از تابع ()time برای به دست آوردن مبدأ زمان استفاده کرد.
به عبارتی با کمک این تابع می توان تعداد ثانیه های سپری شده از هنگام تعیین یک تاریخ برای آن در یونیکس ۱ ژانویه ۱۹۷۰ را محاسبه کرد.
1 2 3 4 5 | #!/usr/local/bin/perl $epoc = time(); print "Number of seconds since Jan 1, 1970 - $epoc\n"; |
اجرای کد بالا خروجی به شکل زیر خواهد داشت.
1 | Number of seconds since Jan 1, 1970 - 1361022130 |
می توان تعداد ثانیه های داده شده بالا را به صورت رشته های تاریخ و زمان در آورد.
به مثال زیر توجه نمایید.
1 2 3 4 5 6 7 8 9 10 | #!/usr/local/bin/perl $datestring = localtime(); print "Current date and time $datestring\n"; $epoc = time(); $epoc = $epoc - 24 * 60 * 60; # one day before of current date. $datestring = localtime($epoc); print "Yesterday's date and time $datestring\n"; |
اجرای کد بالا خروجی به شکل زیر خواهد داشت.
1 2 | Current date and time Tue Jun 5 05:54:43 2018 Yesterday's date and time Mon Jun 4 05:54:43 2018 |
آموزش کار با زمان و تاریخ در پرل را با معرفی POSIX تابع ()strftime و انواع شاخصه های تاریخ و زمان در پرل به پایان می بریم.
می توان با استفاده از POSIX تابع ()strftime قالب بندی تاریخ و زمان با کمک جدول زیر انجام داد.
توجه داشته باشید که تعیین کننده های مشخص شده با ستاره (*) locale-dependent هستند.
شاخصه | جایگذاری شده با … | مثال |
a% | کوتاه سازی نام روزهای هفته | Thu |
A% | نام کامل روز های هفته | Thursday |
b% | کوتاه سازی ماه | Aug |
B% | نام کامل ماه | August |
c% | نمایش تاریخ و زمان | Thu Aug 23 |
C% | تقسیم روزهای سال به ۱۰۰ و گرد کردن عدد صحیح به ۰۰-۹۹ | ۲۰ |
d% | روز های ماه | ۲۳ |
D% | کوتاه سازی تاریخ مثل MM/DD/YY و معادل سازی آن با %m/%d/%y | ۰۸/۲۳/۰۱ |
e% | ترتیب روز های ماه (۳۱-۱) | ۲۳ |
F% | کوتاه سازی تاریخ مثل YYYY-MM-DD و معادل سازی آن با %Y-%m-%d | ۲۰۰۱-۰۸-۲۳ |
g% | هفته مبتنی بر سال، دو رقم آخر (۰۰-۹۹) | ۰۱ |
G% | سال مبتنی بر هفته | ۲۰۱۱ |
h% | مختصر سازی نام ماه مثل (same as %b) | Aug |
شاخصه | جایگذاری شده با … | مثال |
H% | ساعت در قالب ۲۴ ساعته (۰۰-۲۳) | ۱۴ |
I% | ساعت در قالب (۱۲h (01-12 | ۰۲ |
j% | روز سال (۰۰۱-۳۶۶) | ۲۳۵ |
m% | ماه به عنوان یک عدد دهدهی (۰۱-۱۲) | ۰۸ |
M% | دقیقه (۰۰-۵۹) | ۵۵ |
n% | کاراکتر خط جدید (‘n\’) | |
p% | تعیین کننده AM یا PM | PM |
r% | ۱۲ ساعت تمام | ۰۲:۵۵:۰۲pm |
R% | ۲۴ ساعته HH: زمان MM، معادل٪ H:٪ M | ۱۴:۵۵ |
S% | ثانیه (۶۱-۰۰) | ۰۲ |
t% | کاراکتر افقی (‘t\’) | |
T% | فرمت زمان (ISO 8601 (HH: MM: SS، معادل٪ H:٪ M:٪ S | ۱۴:۵۵ |
u% | ISO 8601 روز هفتگی به عنوان شماره با روز دوشنبه به عنوان اولین روز هفته (۱-۷) | ۴ |
U% | شماره هفته با اولین روز یکشنبه به عنوان اولین روز هفته (۰۰-۵۳) | ۳۳ |
V% | ISO 8601 شماره هفته (۰۰-۵۳) | ۳۴ |
w% | روز هفته به عنوان یک عدد اعشاری یکشنبه به عنوان ۰ (۰-۶) | ۴ |
W% | شماره هفته با اولین دوشنبه به عنوان اولین روز هفته (۰۰-۵۳) | ۳۴ |
x% | نمایش تاریخ | ۰۸/۲۳/۰۱ |
X% | نمایش زمان | ۱۴:۵۵:۰۲ |
y% | سال، دو رقم آخر (۰۰-۹۹) | ۰۱ |
Y% | سال | ۲۰۰۱ |
z% | ISO 8601 از ساعت UTC در منطقه زمانی (۱ دقیقه = ۱، ۱ ساعت = ۱۰۰) اگر منطقه زمانی تشخیص داده نشود در آن صورت هیچ گونه کاراکتری نیز وجود نخواهد داشت. | ۱۰۰+ |
Z% | نام منطقه یا نام منطقه زمانی اگر منطقه زمانی تشخیص داده نشود در آن صورت هیچ گونه کاراکتری نیز وجود نخواهد داشت. | CDT |
%% | علامت A% sign | % |
حالا بیایید برای درک بیشتر به بررسی مثال زیر بپردازیم.
1 2 3 4 5 6 7 8 9 | #!/usr/local/bin/perl use POSIX qw(strftime); $datestring = strftime "%a %b %e %H:%M:%S %Y", localtime; printf("date and time - $datestring\n"); # or for GMT formatted appropriately for your locale: $datestring = strftime "%a %b %e %H:%M:%S %Y", gmtime; printf("date and time - $datestring\n"); |
اجرای کد بالا خروجی به شکل زیر خواهد داشت.
1 2 | date and time - Sat Feb 16 07:10:23 2013 date and time - Sat Feb 16 14:10:23 2013 |
در این جلسه در کنار هم به آموزش کار با زمان و تاریخ در پرل پرداختیم و به صورت مفصل و جزء به جزء شاخصه های تعیین زمان را به علاقمندان دوره آموزش پرل پرداختیم.
در جلسه بعد یعنی سیزدهمین جلسه از دوره آموزش پرل به آموزش کار با Subroutines یا زیر شاخه ها که یکی دیگر از انواع توابع موجود در پرل است خواهیم پرداخت.
با پی وی لرن همراه باشید.