آموزش مدیریت Timezones در PHP و بررسی توابع date و time و strtotime
در این مقاله میخوانید
کار با زمان و تاریخ یکی از جنبههای ضروری برنامهنویسی است. باتوجهبه اینکه زبان برنامهنویسی PHP بیشتر برای برنامهنویسی وب استفاده میشود، آموزش مدیریت Timezones در آن اهمیت دوچندان پیدا میکند. در دنیای امروز، ازآنجاکه کسبوکارها میتوانند مشتریها و تیمهای مستقر در مناطق زمانی مختلفی داشته باشند، مدیریت دقیق زمان جایگاه ویژهای پیدا کرده است.
در این مقاله از بلاگ پارس پک، نحوه مدیریت Timezones در PHP را برای جلوگیری از بروز خطاها و ناهماهنگیهای احتمالی توضیح خواهیم داد. در این مسیر، توابع مختلف داخلی PHP مانند تابع date و تابع time و تابع strtotime را بررسی خواهیم کرد که به ما کمک میکنند کارآمدتر با زمان کار کنیم. تا پایان این مطلب با ما همراه باشید تا نحوه مدیریت Timezones در PHP را بیاموزید.
مدیریت Timezones در PHP
در PHP، مناطق زمانی (Timezones) ضروری هستند؛ چراکه کمک میکنند زمان محلی مکانی خاص را تعیین کنیم. PHP از چندین Timezone پشتیبانی میکند که با استفاده از تابع date_default_timezone_set تنظیم میشود. بهعنوان مثال، برای تنظیم Timezone نیویورک میتوانیم از قطعه کد زیر استفاده کنیم:
date_default_timezone_set('America/New_York');
DateTimeZoneImmutable زیرکلاسی از DateTimeZone است که برای ایجاد مناطق زمانی استفاده میشود. مزیت این زیرکلاس آن است که از تغییرات مصون خواهد بود. فراموش نکنید که از DateTimeZoneImmutable زمانی استفاده کنید که مطمئن هستید منطقه زمانی هرگز به تغییر نیاز ندارد.
تابع ()date_default_timezone_set منطقه زمانی یا Timezones پیشفرض استفادهشده همه توابع time/date را در اسکریپتی معین تنظیم میکند. با اینکه این تابع اجازه میدهد منطقه زمانی را تنظیم کنید، جزئیات بسیار کمی دارد و شاید شما را مجبور کند که از همان Timezone در کل اجرای اسکریپت استفاده کنید.
کلاسهای DateTimeZone و DateTimeZoneImmutable کنترل و تطبیقپذیری بیشتری را برای دستکاری مناطق زمانی دراختیار شما قرار میدهند.
تابع date در PHP
کاربرد تابع date در PHP برای قالببندی تاریخها و زمانها براساس نیاز شماست. استفاده صحیح از Timezone هنگام کار با تاریخ اهمیت دارد؛ زیرا دقت نمایش نتایج را کاهش میدهد و در مراحل حادتر، به بروز خطا منجر میشود. درواقع، میتوانیم Timezone دلخواهمان را با آرگومان دوم در تابع date مشخص کنیم. در مثال زیر، نحوه استفاده از تابع date را با Timezone خاص مشاهده میکنید:
date_default_timezone_set('Asia/Tokyo'); echo date('Y-m-d H:i:s', time());
کد بالا Timezone را روی آسیا و شهر توکیو تنظیم و سپس زمان فعلی را در قالب Y-m-d H:i:s قالببندی خواهد کرد.
معرفی کامل انواع داده در PHP و آموزش استفاده از آنها را در مقاله زیر بخوانید.
تابع time در PHP
تابع time در PHP مقدار timestamp یونیکس (Unix) فعلی را برمیگرداند که نشاندهنده تعداد ثانیههایی است که از ۱ژانویه۱۹۷۰ ساعت 00:00:00 UTC گذشته است. بهطورپیشفرض تابع time مقدار timestamp را مطابق با Timezone سرور برمیگرداند. البته اگر بخواهید، میتوانید timestamp یونیکس را با استفاده از تابع date و شناسه Timezone به timestamp خاص دیگری تبدیل کنید. در مثال زیر، نحوه استفاده از تابع زمان با منطقه زمانی خاصی را مشاهده میکنید:
date_default_timezone_set('Europe/London'); echo date('Y-m-d H:i:s', time());
کد بالا Timezone را روی اروپا و شهر لندن تنظیم و سپس زمان فعلی را در قالب Y-m-d H:i:s قالببندی خواهد کرد.
تابع strtotime در PHP
اگر میخواهید یک رشته تاریخ را به timestamp یونیکس تبدیل کنید، از تابع strtotime در PHP میتوانید استفاده کنید. تنظیم Timezone برای کار با strtotime نیز ضروری است؛ زیرا اگر از کنار تنظیمات آن بیتوجه عبور کردید، نباید روی دقت نتایج حساب باز کنید.
اگر لازم بود، میتوانید Timezone را بهعنوان آرگومان دوم در تابع strtotime قرار دهید. در مثال زیر، نحوه استفاده از تابع strtotime با منطقه زمانی خاصی را میبینید:
date_default_timezone_set('America/Los_Angeles'); $timestamp = strtotime('2023-02-18 10:30:00'); echo date('Y-m-d H:i:s', $timestamp);
کد بالا Timezone را روی America/Los_Angeles تنظیم و سپس رشته تاریخ ‘2023-02-18 10:30:00’ را به timestamp یونیکس تبدیل میکند. درنهایت، timestamp را در قالب Y-m-d H:i:s قالببندی خواهد کرد.
چرا باید نسخه PHP را بهروز نگه داریم؟ کدام نسخه از PHP را انتخاب کنیم؟ چطور نسخه پیاچپی را تغییر دهیم؟ در مقاله زیر بخوانید.
جمعبندی
کاربرد مدیریت Timezones در PHP برای جلوگیری از خطاهای احتمالی و ناهماهنگی در محاسبات تاریخ و زمان خود را نشان میدهد. در این مقاله از بلاگ پارس پک، توابع مختلف داخلی PHP همچون تابع date و تابع time و تابع strtotime را بررسی کردیم و دیدیم که چگونه میتوانیم از آنها برای کار با زمان و تاریخ دقیق استفاده کنیم. با کمک این توابع و با Timezone مناسب، مطمئن باشید که کد شما نتایج منسجم و دقیقی تولید خواهد کرد.
سؤالات متداول
۱. تابع date در PHP چه کاربردی دارد؟
برای قالببندی تاریخها و زمانها از این تابع میتوان کمک گرفت.
۲. کاربرد تابع time در PHP چیست؟
مقدار timestamp یونیکس (Unix) فعلی را برمیگرداند.
۳. تابع strtotime در PHP چه کاربردی دارد؟
یک رشته تاریخ را به timestamp یونیکس تبدیل میکند.