آموزش رایگان PHP

آموزش سیر تا پیاز تاریخ و زمان در PHP (استاندارد گوگل)

27م تیر 1405 محراب حسن زاده
آموزش سیر تا پیاز تاریخ و زمان در PHP (استاندارد گوگل)

مقدمه

مدیریت تاریخ و زمان یکی از اساسی‌ترین نیازها در توسعه وب‌سایت‌ها و نرم‌افزارها است. از ثبت زمان ارسال یک پست گرفته تا محاسبه زمان انقضای تراکنش‌ها و زمان‌بندی کارهای مختلف، همه نیازمند ابزارهای دقیق برای مدیریت زمان هستند. زبان PHP ابزارهای بسیار قدرتمندی را هم در قالب توابع رویه‌ای (Procedural) و هم به صورت شیء‌گرا (Object-Oriented) برای این کار ارائه می‌دهد.

۱. تنظیم منطقه زمانی (Timezone) در PHP

قبل از کار با هرگونه تابع تاریخ و زمان در PHP، بسیار مهم است که منطقه زمانی یا Timezone سیستم خود را تنظیم کنید. در غیر این صورت، زمان‌ها بر اساس تنظیمات پیش‌فرض سرور (که معمولاً UTC است) نمایش داده می‌شوند.

برای تنظیم منطقه زمانی روی ساعت تهران، از تابع زیر استفاده می‌کنیم:


date_default_timezone_set('Asia/Tehran');

همچنین با استفاده از تابع date_default_timezone_get() می‌توانید منطقه زمانی فعلی سیستم را دریافت کنید.

۲. کار با تابع date() و فرمت‌های رایج آن

تابع date() پرکاربردترین تابع برای فرمت‌دهی تاریخ و زمان در PHP است. این تابع یک فرمت متنی را دریافت کرده و زمان فعلی (یا یک Timestamp مشخص) را بر اساس آن فرمت می‌کند.


// نمایش تاریخ امروز به صورت: 2023/10/24
echo date("Y/m/d");

// نمایش زمان فعلی به صورت: 15:30:45
echo date("H:i:s");

// ترکیب تاریخ و زمان با منطقه زمانی
echo date("Y-m-d H:i:s");

کاراکترهای فرمت‌دهی پرکاربرد:

  • Y: سال به صورت ۴ رقمی (مثال: 2023)
  • m: ماه به صورت ۲ رقمی با صفر پیش‌فرض (01 تا 12)
  • d: روز ماه به صورت ۲ رقمی با صفر پیش‌فرض (01 تا 31)
  • H: ساعت به صورت ۲۴ ساعته با صفر پیش‌فرض (00 تا 23)
  • h: ساعت به صورت ۱۲ ساعته با صفر پیش‌فرض (01 تا 12)
  • i: دقیقه با صفر پیش‌فرض (00 تا 59)
  • s: ثانیه با صفر پیش‌فرض (00 تا 59)
  • A: نمایش حروف بزرگ AM یا PM

۳. مفهوم Timestamp و تابع time()

برچسب زمانی یا Timestamp (مشخصاً Unix Timestamp) تعداد ثانیه‌های سپری شده از تاریخ ۱ ژانویه ۱۹۷۰ ساعت 00:00:00 UTC است. این عدد مستقل از منطقه‌های زمانی است و برای ذخیره‌سازی زمان در پایگاه داده بسیار مناسب است.


$currentTime = time();
echo $currentTime; // خروجی عددی شبیه به: 1698154245

// تبدیل Timestamp به تاریخ قابل خواندن برای انسان
echo date("Y-m-d H:i:s", $currentTime);

۴. تابع جادویی strtotime()

یکی از جالب‌ترین و کاربردی‌ترین توابع در PHP، تابع strtotime() است. این تابع عبارات متنی انگلیسی مربوط به زمان را گرفته و آن‌ها را به Timestamp تبدیل می‌کند.


echo strtotime("now"); // زمان فعلی
echo strtotime("tomorrow"); // زمان فردا در همین ساعت
echo strtotime("+3 days"); // سه روز آینده
echo strtotime("next Monday"); // دوشنبه هفته آینده
echo strtotime("last Friday"); // جمعه گذشته

۵. رویکرد شیء‌گرا: کار با کلاس DateTime

در PHP مدرن (نسخه‌های ۵.۲ به بعد و به ویژه PHP 7 و PHP 8)، توصیه اکید استفاده از کلاس‌های شیء‌گرا مانند DateTime است. این کلاس‌ها مدیریت تاریخ را بسیار ساده‌تر، تمیزتر و ایمن‌تر می‌کنند.

ساخت شیء DateTime:


// زمان فعلی
$date = new DateTime();

// یک زمان مشخص با منطقه زمانی خاص
$dateCustom = new DateTime('2023-12-25 08:00:00', new DateTimeZone('America/New_York'));

// نمایش فرمت‌شده
echo $dateCustom->format('Y-m-d H:i:s P');

محاسبات تاریخ با DateTime و DateInterval:

با استفاده از متدهای add و sub و کلاس DateInterval، می‌توانید به راحتی به تاریخ‌ها اضافه یا از آن‌ها کم کنید.


$date = new DateTime(); // امروز

// اضافه کردن ۱۰ روز به تاریخ فعلی (P = Period, 10D = 10 Days)
$date->add(new DateInterval('P10D'));
echo $date->format('Y-m-d');

// کم کردن ۲ ماه (P2M = 2 Months)
$date->sub(new DateInterval('P2M'));
echo $date->format('Y-m-d');

محاسبه اختلاف دو تاریخ (Diff):


$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-12-31');

$interval = $date1->diff($date2);

echo $interval->format('%R%a days'); // خروجی: +364 days

نتیجه‌گیری

استفاده از کلاس DateTime در پروژه‌های جدید و بزرگ به دلیل پشتیبانی عالی از منطقه‌های زمانی مختلف و قابلیت‌های شیء‌گرایی بالا پیشنهاد می‌شود. با این حال، استفاده از توابعی نظیر date() و strtotime() برای کارهای کوچک و سریع کماکان بسیار رایج و کاربردی است.


پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

مفهوم متغیرها و انواع داده در جاوا اسکریپت: راهنمای جامع برای مبتدیان
28م شهریور 1402

مفهوم متغیرها و انواع داده در جاوا اسکریپت: راهنمای جامع برای مبتدیان

مطالعه بیشتر
آموزش گام به گام طراحی مگا منو (Mega Menu) مدرن با CSS و HTML
13م خرداد 1405

آموزش گام به گام طراحی مگا منو (Mega Menu) مدرن با CSS و HTML

مطالعه بیشتر
آموزش جامع تعریف تابع سفارشی در PHP طبق استاندارد گوگل و PSR
16م تیر 1405

آموزش جامع تعریف تابع سفارشی در PHP طبق استاندارد گوگل و PSR

مطالعه بیشتر
آموزش جامع و استاندارد کار با رشته‌ ها در PHP
27م تیر 1405

آموزش جامع و استاندارد کار با رشته‌ ها در PHP

مطالعه بیشتر
آموزش استفاده از تگ‌های تصویری در HTML: نمایش و مدیریت تصاویر در صفحات وب
29م مرداد 1402

آموزش استفاده از تگ‌های تصویری در HTML: نمایش و مدیریت تصاویر در صفحات وب

مطالعه بیشتر
آموزش انیمیشن‌های پیشرفته با keyframes در CSS: طراحی حرکات پویا و چند مرحله‌ای
18م شهریور 1402

آموزش انیمیشن‌های پیشرفته با keyframes در CSS: طراحی حرکات پویا و چند مرحله‌ای

مطالعه بیشتر
آموزش توسعه بازی‌های ساده با استفاده از جاوا اسکریپت و Canvas API: راهنمای گام به گام
5م آبان 1403

آموزش توسعه بازی‌های ساده با استفاده از جاوا اسکریپت و Canvas API: راهنمای گام به گام

مطالعه بیشتر
آموزش جامع اعتبارسنجی اطلاعات فرم در PHP طبق استانداردهای امنیتی گوگل
27م تیر 1405

آموزش جامع اعتبارسنجی اطلاعات فرم در PHP طبق استانداردهای امنیتی گوگل

مطالعه بیشتر
آموزش جامع توابع داخلی و پرکاربرد PHP + مثال‌های عملی
16م تیر 1405

آموزش جامع توابع داخلی و پرکاربرد PHP + مثال‌های عملی

مطالعه بیشتر
تفاوت Data و Computed Properties در Vue.js | آموزش کاربردی و مثال‌محور
21م آذر 1404

تفاوت Data و Computed Properties در Vue.js | آموزش کاربردی و مثال‌محور

مطالعه بیشتر
آموزش کار با Webpack و Bundlers برای مدیریت پروژه‌ها: راهنمای جامع و کاربردی
5م آبان 1403

آموزش کار با Webpack و Bundlers برای مدیریت پروژه‌ها: راهنمای جامع و کاربردی

مطالعه بیشتر
آموزش جامع توابع در جاوا اسکریپت: نحوه تعریف، فراخوانی و بازگشت مقادیر
2م بهمن 1402

آموزش جامع توابع در جاوا اسکریپت: نحوه تعریف، فراخوانی و بازگشت مقادیر

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد