آموزش رایگان 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() برای کارهای کوچک و سریع کماکان بسیار رایج و کاربردی است.


پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش HTML: اولین گام برای طراحی سایت و سئو حرفه‌ای
1402/05/18 00:00

آموزش HTML: اولین گام برای طراحی سایت و سئو حرفه‌ای

مطالعه بیشتر
آموزش ایجاد و حذف المان‌های DOM به صورت داینامیک با جاوا اسکریپت: راهنمای جامع و کاربردی
1403/08/02 21:21

آموزش ایجاد و حذف المان‌های DOM به صورت داینامیک با جاوا اسکریپت: راهنمای جامع و کاربردی

مطالعه بیشتر
آموزش تگ‌های پیوندی و اتصالی در HTML: ایجاد لینک‌های داخلی و خارجی
1402/05/29 21:03

آموزش تگ‌های پیوندی و اتصالی در HTML: ایجاد لینک‌های داخلی و خارجی

مطالعه بیشتر
آموزش جامع ساخت فرم ثبت‌نام کاربران با PHP و MySQL طبق اصول امنیتی گوگل
1405/05/13 21:34

آموزش جامع ساخت فرم ثبت‌نام کاربران با PHP و MySQL طبق اصول امنیتی گوگل

مطالعه بیشتر
مدیریت ترتیب نمایش با z-index در CSS: آموزش کامل و کاربردی
1403/08/11 21:28

مدیریت ترتیب نمایش با z-index در CSS: آموزش کامل و کاربردی

مطالعه بیشتر
کار با border و تنظیمات آن در CSS: مدیریت زوایای گرد با border-radius
1403/08/09 20:16

کار با border و تنظیمات آن در CSS: مدیریت زوایای گرد با border-radius

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

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

مطالعه بیشتر
مقدمه‌ای بر Node.js و کار با جاوا اسکریپت سمت سرور: آموزش اولیه و اصولی
1403/08/04 19:58

مقدمه‌ای بر Node.js و کار با جاوا اسکریپت سمت سرور: آموزش اولیه و اصولی

مطالعه بیشتر
آموزش CSS Transform و Transition: تبدیل‌ها و ایجاد تغییرات ظاهری پویا
1402/06/10 18:32

آموزش CSS Transform و Transition: تبدیل‌ها و ایجاد تغییرات ظاهری پویا

مطالعه بیشتر
آموزش مفاهیم اولیه CSS Grid Layout: طراحی شبکه‌های پیچیده و واکنش‌گرا راهنمای کامل
1402/06/06 23:24

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

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

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

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

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

مطالعه بیشتر

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