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

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

1405/04/27 21:58 محراب حسن زاده
آموزش سیر تا پیاز تاریخ و زمان در 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() برای کارهای کوچک و سریع کماکان بسیار رایج و کاربردی است.


پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

معرفی MySQL و phpMyAdmin: راهنمای جامع مدیریت پایگاه داده برای توسعه‌دهندگان وب
1405/05/04 23:32

معرفی MySQL و phpMyAdmin: راهنمای جامع مدیریت پایگاه داده برای توسعه‌دهندگان وب

مطالعه بیشتر
الگوهای رایج برنامه‌نویسی ناهمگام در جاوا اسکریپت: Promise.race، Promise.all، و Promise.any کامل و مثال‌ها
1403/08/01 19:08

الگوهای رایج برنامه‌نویسی ناهمگام در جاوا اسکریپت: Promise.race، Promise.all، و Promise.any کامل و مثال‌ها

مطالعه بیشتر
آموزش ساخت یک Todo List با استفاده از DOM و جاوا اسکریپت: راهنمای گام به گام
1403/08/03 16:30

آموزش ساخت یک Todo List با استفاده از DOM و جاوا اسکریپت: راهنمای گام به گام

مطالعه بیشتر
آموزش جامع پیاده‌سازی سطح دسترسی کاربران (ACL) در PHP
1405/05/14 22:17

آموزش جامع پیاده‌سازی سطح دسترسی کاربران (ACL) در PHP

مطالعه بیشتر
آموزش جامع حلقه‌های for و while در جاوا اسکریپت: نحوه استفاده و کاربردها
1402/11/02 23:10

آموزش جامع حلقه‌های for و while در جاوا اسکریپت: نحوه استفاده و کاربردها

مطالعه بیشتر
آموزش کامنت‌ها و کاراکترهای خاص در HTML و CSS: نحوه استفاده و مدیریت
1402/05/23 00:08

آموزش کامنت‌ها و کاراکترهای خاص در HTML و CSS: نحوه استفاده و مدیریت

مطالعه بیشتر
استفاده از setTimeout و setInterval در جاوا اسکریپت: آموزش کامل و مثال‌ها
1403/07/29 20:46

استفاده از setTimeout و setInterval در جاوا اسکریپت: آموزش کامل و مثال‌ها

مطالعه بیشتر
راهنمای کامل لیست‌ها در HTML: آموزش انواع و اصول سئو
1402/05/20 22:02

راهنمای کامل لیست‌ها در HTML: آموزش انواع و اصول سئو

مطالعه بیشتر
راهنمای جامع قوانین نام‌گذاری متغیرها در PHP بر اساس استاندارد گوگل
1405/03/24 00:57

راهنمای جامع قوانین نام‌گذاری متغیرها در PHP بر اساس استاندارد گوگل

مطالعه بیشتر
آشنایی با انواع انتخاب‌گرها و تغییر پس‌زمینه با CSS: راهنمای جامع
1402/06/04 23:55

آشنایی با انواع انتخاب‌گرها و تغییر پس‌زمینه با CSS: راهنمای جامع

مطالعه بیشتر
آموزش فیلتر کردن داده‌ها در PHP با توابع filter_var و preg_match
1405/05/13 21:29

آموزش فیلتر کردن داده‌ها در PHP با توابع filter_var و preg_match

مطالعه بیشتر
آموزش ساخت یک برنامه ساده با Fetch API در جاوا اسکریپت: راهنمای گام به گام
1403/08/01 20:16

آموزش ساخت یک برنامه ساده با Fetch API در جاوا اسکریپت: راهنمای گام به گام

مطالعه بیشتر

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