خلاصه آموزش :

کار با تاریخ و زمان در php

استفاده از تابع ()date جهت بدست آوردن زمان فعلی سیستم

بدست آوردن زمان محلی در php

تایم استامپ (timestamp) چیست؟

تابع ()date در php

کار با تابع ()MKtime در php

استفاده از تابع ()strtotime در php

 

زبان برنامه نویسی PHP توابع کتابخانه ای متعددی برای کار با زمان ارائه می کند. در این آموزش به معرفی توابع تاریخ و زمان در Php خواهیم پرداخت.

تابع ()date :

این تابع برای ساختن فرمت های مختلف تاریخ ویا زمان است. این تابع دو پارامتر دارد که یکی برای فرمت خروجی تاریخ (پارامتر format) و دیگری timestamp می باشد. واردکردن پارامتر timestamp دلخواه می باشد و این پارامتر پایه و منباء اطلاعاتی که پارامتر format دریافت می کند را تنظیم می کند. شکل کلی این تابع به صورت زیر است:

پارامتر format باید به شکل رشته ای وارد شود. این رشته باید دارای فرمت خاصی باشد که تنها مقادیر خاصی می تواند در آن قرار گیرد. در زیرجدولی را مشاهده می کنید که شامل این کاراکتر ها می باشد:

کاراکتر توضیحات
d روز از ماه را به شکل عدد دورقمی نشان می دهد (از ۰۱ تا ۳۱).
D روز هفته را به صورت سه حرفی نشان می دهد.
j روز را به صورت عدد ۱ یا دوحرفی بدون صفر پیش از آن نشان می دهد (از ۱ تا ۳۱).
l روز هفته را به صورت کامل نشان می دهد.
N روز هفته به شکل عددی نشان می دهد (از ۱ تا ۷).
S پسوند تاریخ را به شکل انگلیسی نشان می دهد (st، nd، rd یا th).
w روز هفته را به شکل عددی نشان می دهد (از ۰ تا ۶).
z روز از سال را نشان می دهد (از ۰ تا ۳۶۵).
W شماره هفته از سال را نشان می دهد.
F نام کامل ماه را نشان می دهد.
m شماره ماه به شکل عددی را همراه با صفر پیش از آن نشان می دهد (از ۰۱ تا ۱۲).
M نام ماه را به صورت سه حرفی نشان می دهد.
n شماره ماه بدون صفر پیش از آن را به شکل عددی نشان می دهد (از ۱ تا ۱۲).
t تعداد روزهای ماه را نشان می دهد.
L سال کبیسه را نشان می دهد (اگر سال کبیسه باشد ۱ درغیر این صورت ۰).
o شماره سال را به شکل عددی نشان می دهد.
Y شماره سال را به صورت ۴ حرفی نشان می دهد.
y شماره سال را به صورت ۲ حرفی نشان می دهد.
a am(قبل از ظهر) یا pm(بعد از ظهر) را با حروف کوچک نشان می دهد.
A Am یا PM را با حروف بزرگ نشان می دهد.
g ساعت را به صورت ۱۲ ساعته و بدون صفر پیش از آن نشان می دهد (از ۱ تا ۱۲).
G ساعت را به صورت ۲۴ ساعته و بدون صفر پیشین نشان می دهد (از ۰ تا ۲۳).
h ساعت را به صورت ۱۲ ساعته و همراه با صفر پیشین نشان می دهد (از ۰۱ تا ۱۲).
H ساعت را به صورت ۲۴ ساعته و همراه با صفر پیشین نشان می دهد (از ۰۰ تا ۲۳).
i دقیقه را همراه با صفر پیشین نشان می دهد (از ۰۰ تا ۵۹).
s ثانیه را همراه صفر پیشین نشان می دهد (از ۰۰ تا ۵۹).
u میکروثانبه را نشان می دهد.
e منطقه زمانی را نشان می دهد (مانند gmt یا utc).
O تفاوت زمانی با زمان گرینویچ را به ساعت نشان می دهد.
P تفاوت زمانی با گرینویچ را به ساعت و دقیقه نشان می دهد.

همانطور که می بینید حروف کوچک و بزرگ مقادیر مختلفی را دارا هستند و باید در این مورد دقت لازم را به جا آورد.

این کاراکترها می توانند با یکدیگر ترکیب شوند و یک فرمت زمان یا تاریخ را بسازند. همچنین از کاراکترهای دیگری مانند ، – . و… برای جداسازی عددهای مختلف استفاده کرد.

مثال:

در این مثال تاریخ و زمان را بوسیله تابع date چاپ می کنیم:

خروجی
Today is: 2017/4/28
and time is: 3:52:52 pm

اما این مقادیر خروجی مربوط به منطقه زمانی تهران نیست و مربوطه به منطقه زمانی پیشفرض می باشد. برای تنظیم منطقه زمانی خود باید از تابع ()date_default_timezone_set استفاده کرد.

تابع ()date_default_timezone_set :

همانطور که گفته شد این تابع برای تنظیم منطقه زمانی است. همچنین می توان منظقه زمانی فعلی و ثبت شده را توسط تابع ()date_default_timezone_get دریافت کرد. کار تابع ()date_default_timezone_set در اصل تنظیم مقدار date.timezone موجود در فایل php.ini می باشد. این تابع تنها دارای یک پارامتر با نام timezone_identifier می باشد که به صورت رشته ای می باشد. برای تنظیم منطقه زمانی برای ایران باید از مقدار Asia/Tehran استفاده کرد:

پس اگر این خط و سپس کدهای مثال قبل را اجرا کنیم کد و خروجی مانند زیر خواهیم داشت:

خروجی
Today is: 2017/4/28
and time is: 8:34:19 pm

مهرهای زمانی یا timestamps :

منظور از مهر زمانی یا timestamp، یک سری اعداد ساده به صورت integer است .در یک توضیح جزئی تر ، این اعداد تعداد ثانیه هایی هستند که از نیمه شب ۱ ژوئن ۱۹۷۰ تا به این لحظه گذشته است . برای به دست آوردن تعداد این ثانیه ها در PHP توابعی وجود دارند که در زیر به آنها اشاره شده است.

تابع ()time :

این تابع تاریخ و زمان فعلی را برمی گرداند و مقدار پیشفرض تابع ()date برای پارامتر timezone_identifier نیز همین است.

این تابع زمان فعلی را به عددی تبدیل می کند که می توان آن را در تابع ()date استفاده کرد. اگر خروجی این تابع را چاپ کنیم خروجی آن عددی مانند خروجی زیر می باشد:

بعد از اجرای کد بالا عددی به صورت ۱۴۹۳۳۹۶۹۰۶ (البته ممکن است برای شما متفاوت باشد) نشان داده می شود که نشان دهنده تعداد ثانیه های گذشته شده از تاریخ مذکور تا الان است. حال چندین بار مرورگر را Refresh کنید. مشاهده می کنید که با هر بار Refresh مرورگر این رقم تغییر کرده و بیشتر می شود. با به کار بردن خروجی این تابع به عنوان پارامتر دوم در تابع ()date می توان یک تاریخ تولید کرد. به مثال زیر توجه کنید :

تابع ()date تعداد ثانیه ها را به یک تاریخ خوانا تبدیل می کند.

خروجی
۲۰۱۷/۰۴/۲۸

تابع ()MKtime :

تابع ()MKtime تعداد ثانیه های گذشته تا یک تاریخ خاص را بر می گرداند.دستور استفاده از این تابع به صورت زیر است :

همانطور که در بالا مشاهده می کنید پارامترهای این تابع ساعت، دقیقه، ثانیه، ماه، روز و سال است. مثلا برای به دست آوردن ثانیه های یک سال بعد از تاریخ مبداء (۱۹۷۰/۰۱/۰۱) کد زیر را نوشته و اجرا کنید :

خروجی
۳۱۵۳۶۰۰۰

تابع ()strtotime :

کار این تابع تبدیل یک مقدار رشته ای به یک عدد قابل تشخیص برای تابع date() می باشد (مانند تابع ()mktime و ()time). تنها پارامتر اجباری این تابع time می باشد که مقدار رشته ای را دریافت می کند. شکل کلی آن به صورت زیر است:

این تابع، هر عبارت انگلیسی که حاوی اطلاعاتی توصیفی درباره زمان و تاریخ است را تحلیل می کند و نتیجه را به صورت timestamp بر می گرداند. برای مثال به نمونه زیر دقت کنید:

خروجی این تابع، timestamp زمانی به فاصله یک روز از همین لحظه است. یعنی timestamp همین لحظه در روز بعد (فردا) را می دهد.

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

در مثال بالا یک تاریخ با فرمت رشته به تابع داده ایم و در خروجی یک فرمت تاریخ از این رشته را دریافت کرده که قابلیت انجام عملیات محاسباتی بر روی آن را داریم.

خروجی
۲۰۱۴/۲/۲۰

مثالی دیگر:

در این مثال می خواهیم تعداد روزهای یک ماه را به دست آوریم. ابتدا نام ماه را به وسیله تابع ()strtotime به یک مهرزمانی (timestamp) تبدیل کرده و سپس توسط کاراکتر “t” برای پارامتر format از تابع ()date تعداد روزهای ماه را بدست می آوریم. کد این برنامه به شکل زیر خواهد بود:

دراین مثال تعداد روزهای ماه February را بدست آوردیم که برابر با ۲۸ بود.

 

 

این خبر را به اشتراک بگذارید :