دوره مجازی PHP (جلسه 11): توابع php - کار با تاریخ و زمان



visibility  
mode_comment   ۴۴

در این جلسه در مورد توابع کار با تاریخ و زمان در زبان php صحبت می کنیم و کار با تاریخ و زمان و انجام عملیات بر روی آنها رو توضیح خواهیم داد .

موارد مطرح شده در این جلسه عبارتند از :

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

  • توابع از پيش تعريف شده ي PHP و مزاياي استفاده از آنها
  • نحوه ي جستجوي توابع مختلف PHP و يافتن توابع مورد نياز شما
  • کار با تاريخ و زمان :
  • دريافت و فرمت بندي تاريخ کنوني سرور  و تبديل timestamp به تاريخ
  • دريافت زمان و ساعت کنوني سرور به شکل timestamp
  • دريافت زمان کنوني به ميکروثانيه
  • ساخت يک شئ از کلاس تاريخ
  •  ساخت يک شئ تاريخ با فرمت دلخواه
  • دريافت منطقه ي زماني
  • تنظيم کردن منطقه ي زماني
  • افزودن يک مقدار (ساعت،روز،ماه ...) به يک تاريخ
  • کم کردن و تفريق يک بازه ي زماني از يک تاريخ
  • دريافت اختلاف زماني بين دو تاريخ مختلف
  • انجام تغيرات در تاريخ
  • نمايش يک تاريخ با فرمت خاص
  • دريافت اجزاء مختلف تاريخ (روز، ماه، سال، ثانيه، دقيقه، ساعت و ...)
  • دريافت زمان طلوع خورشيد
  • دريافت زمان غروب خورشيد
  • تنظيم ساعت در يک تاريخ
  • دريافت برچسب زماني (timestamp) يک تاريخ
  • تبديل يک رشته ي تاريخ  به timestamp
  • دريافت اطلاعات و اجزاء مختلف تاريخ کنوني سرور
  • دريافت اجزاء مختلف تاريخ (ساعت، روز، ماه و ...)  به صورت عدد صحيح
  • بهره گیری و استفاده از تاریخ فارسی با کتابخانه ی jdf
  • ميني پروژه : نمايش تاريخ به صورت زمان گذشته شده تا کنون (مثال : 2 ماه  پيش)
  • تمرين
info توجه

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

ثبت نام در آموزش زبان برنامه نویسی php

comment دیدگاه کاربران
na3r replyپاسخ

خیلی عالی بود ، مخصوصا مینی پروژه ..!
همیشه کار با زمان توی php یکی از دغدغه هام بود … ممنون استاد.

لقمان آوند

خواهش می کنم
ایشالله که خوب یاد گرفته باشید و خوب هم تمرین کنید که آموخته هاتون فراموش نشه .

Ali replyپاسخ

خسته نباشید ، عالی بود…
بالاخره تونستم با آموزش خوب شما یکی از اسکریپت هایی که قصد استفادشو دارم شمسی سازی کنم و خیلی عالی هم کار میکنه ، فقط نمیدونم اصولی انجام دادم یا غیر اصولی !؟

فقط مونده درگاه که ببینم اونم میتونیم با آموزش های شما درست کنیم یا نه !
لطفا تا جایی که میتونید مثال ها کاربردی باشه تا کدها کاربرد خودشونو تا جایی که میشه نشون بدن
ممنون….

لقمان آوند

خواهش می کنم
ایشالله سعی می کنیم همینطور باشه .

neyvid replyپاسخ

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

لقمان آوند

جواب کدوم تمرین رو می خوای دقیقا ؟

neyvid

سلام.تمرینی که خودتون به عنوان پروژه در این درس حل کردید ولی قسمتی که به عنوان تمرین فرمودین کاری کنیم که نمایش بده مثلا 3 روز و 3 ساعت قبل..مینی پروژه شما فقط سال و روز و دقیقه و ثانیه را نشان میداد مثلا نشان میداد 2 روز قبل..

لقمان آوند

سلام
با توجه به توابعی که توضیح دادیم کار ساده ای هست . این کدهای فایل php این تمرین خدمت شما :

neyvid replyپاسخ

شاید با شکست عدد اعشاری و کار روی اعشاری بشه یه کارایی کرد که بازم من نیمدونم!!

جعفر پیشدادی replyپاسخ

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

لقمان آوند

کدوم تابع رو میگید؟ همگی تست شده و اجرا شدند…

mahdi.mdt replyپاسخ

سلام استاد تابع mktime خطا میده میگه باید از تابع time استفاده کنی؟
آیا مربوط به نسخهی php هست
Strict standards یعنی چی؟ میشه توضیح بدید؟
Strict standards: mktime(): You should be using the time() function instead
ممنون

لقمان آوند

Strict Standard هم یه نوع از خطاها هست که برای استاندارد سازی استفاده از توابع php ایجادش کردند. اگر توابعی که پیشنهاد میده رو به جای قبلی استفاده کنید که استانداردتره.
اگه نسخه php شما از 5.4 بالاتر هست ممکنه تو نمایش خطا این مورد فعال باشه. از فایل کانفیگ php.ini باید error_reportnig رو مقدارش رو بزارید :
error_reporting = E_ALL & ~E_STRICT

Massud Tarekhi

برای من هم این مشکل بوجود اومد
خب باید تو تابع mktime یه time بنویسید که فرمتبندی نوشتن time در تابع mktime رو می تونید تو لینک زیر ببینید :
http://www.w3schools.com/php/func_date_mktime.asp

حمید نقی پور replyپاسخ

با استفاه از آنچه که از استاد عزیز آموختم کدی رو به این صورت نوشتم که زمان طی شده از ثبت یک پست رو برمیگردونه و مشخص میکنه چند سال ماه روز ساعت دقیقه و ثانیه ازش گذشته و اگه مثلا یه روز و 2 ثانیه ازش گذشته باشه فقط این دوتارو برمیگردونه.( از استاد عزیز تقاضا دارم کد رو بررسی کنن اگه ایرادی بود بگن. در صورت صلاحدید تایید کنید دیگر دوستانم ببینند . اگه نیاز ندیدید که باشه طی پیغام شخصی جواب دهید . سپاس.)درضمن همیشه دغدغه اینو داشتم که چجوری میشه این همه تابع رو حفظ کرد که راهنمایی خوبتون بسیار حال داد :دی
متاسفانه کد درست قرار نگرفت میفرستم به ایمیلتون چک کنید …

لقمان آوند

ایمیلتون رو پاسخ خواهم داد .

Mehdi Mashayekhi replyپاسخ

سلام استاد در فیلم اموزشی وقتی تابع فراخوانی منطقه زمانی سرور را چاپ میکنید کلمه iran رو بر میگردونه خوب مگه نباید asia tehran رو بر گردونه؟

لقمان آوند

این مورد رو الان دقیقا یادم نیست . چیزی که برمیگردونه رو تو کدها بررسی بفرمایید و سایت رسمی php رو هم چک کنید .

leo vartoomian replyپاسخ

با سلام
من وقتی فایل farsi.php را اجرا میکنم توی خروجی به من اینطوری نشون میده “تابستان , سه شنبه , Û°Û² تیر Û±Û³Û¹Û´ (هزار Ùˆ سیصد Ùˆ نود Ùˆ چهار) – سال گوسفند
زمستان , چهارشنبه , Û°Û´ بهمن Û±Û³Û¹Û± (هزار Ùˆ سیصد Ùˆ نود Ùˆ یک) – سال نهنگ”

دلیلش چیست؟(زبان سیستم من روی persian هست)

لقمان آوند

ممکنه یونیکد فایل utf8 نباشه . اونو به utf8 تغیر بدید. در صفحه ای که می خواید متن فارسی نمایش بدید تگ متای html مربوط به انگودینگ رو هم utf8 بزارید .

Silent Mash replyپاسخ

سلام استاد عزیز
توابع برای زبان انگلیسی ب درستی کار میکنند منتها برای زبان فارسی مشکل دارند
مثلا تابع
compress
uncompress
یک نمونش هست
وقتی کمپرس کنیم مشکلی نداره اما وقتی بخوای ان کامپرس کنی نمتونه برگردونه

وحید صالحی

نمی تونه برگردنه که نمیشه بلاخره یه چیزی برمیگردونه ببینید پی برمیگردونه تا مشکل مشخص بشه

Silent Mash replyپاسخ

یا مثلا
array_change_key_case
این توابع مفید برای زبان انگلیسی هستند و برای زبان فارسی کمتر کاربرد دارند یا اصلا ندارند
ای کاش درکنار اینها بیشتر توابعی رو تدریس میکردید ک برای زبان فارسی هم کاربرد میداشتند…

Silent Mash replyپاسخ

ممنونم ک نظرم رو تایید نمیکنید!وپاسخگو نیستید حتی بعد از گذشت دو روز!…..

وحید صالحی

دوست عزیز سوالی از شما دریافت نکردیم!

Silent Mash replyپاسخ

یامثلا جناب استاد تنها کاربایک فریم ورک ساده در قالب ام وی سی رو یاددادند ! درحالی ک کدایگنایتر یا لاراوال هم هستد و ضمن اینکه ساخت یک فریم ورک شخصی رو هم بهتر بود مختصرا حداقل توضیح میدادند
اینهارا گفتم گرچه میدانم شاید این نظرات رو تایید نکنید یااگر تایید کنید فقط یک پاسخی بدهید و رد بشوید و به قول معروف ماست مالی کنید….چون در جواب بعضی نظرات دیگر دیدم گفتم…بهرحال میدانم این نظرات زیاد شاید مورد قبولتان واقع نشود….

لقمان آوند

دوست عزیز تک تک نظرات شما برام ما مهمه و همه تلاشمون بر پاسخگویی دقیق و کامله .
شما انتظاراتتون بالاست. نمی شه همه چیز رو در یک مجموعه گفت. کیفیت کلی کار پایین میاد.
بحث MVC و فریمورک های مربوطه خودشون یه بحث گسترده و بزرگ هست و باید در دوره مجزا تدریس بشن. این کار رو ایشالله در آینده انجام خواهیم داد.
تو این دوره هدف این بوده که خود زبان php رو خیلی خوب یاد بگیرید. اگر اینو خوب یاد بگیرید بعد خیلی بهتر و راحتتر می تونید سراغ مقوله های دیگه برید.
در آینده برای فریمورک های MVC دوره های کاملی خواهیم داشت …

majid nasrollahi replyپاسخ

با سلام خدمت آقای آوند و همکاران محترم، تاریخی که در صفحه اول سایت نمایش داده میشود چگونه ساخته میشود مثلا امرو تاریخ چهار شنبه یا پنجشنبه 30مهر ماه مثلا 94 تاریخ همان روزی که سایت مشاهده میشود با تشکر از شما

وحید صالحی

هم با جاوا اسکریپت می تونید ایجادش کنید که در گوگل عبارت نمایش تاریخ کنونی توسط جاوااسکریپت یا جی کوئری رو جستجو کنید کدهای زیادی موجوده و هم با php توسط timestamp و تبدیل اون به تاریخ جاری و استفاده از کتابخانه jdf برای شمسی سازی اون می تونید استفاده کنید

Omid Ctrain replyپاسخ

لطفاً دوره های mvc رو هم بذارین. تشکر

roohi b replyپاسخ

سلام میشه دلیل این مشکلی که ب وجود اومده رو بررسی کنید ممنون
http://s6.uplod.ir/i/00776/431x6y0t3mp2.jpg

لقمان آوند

شما تو مد strict standard دارید کار می کنید که بهتون استفاده از توابع استاندارد و به روز تر رو پیشنهاد میکنه. به جای mktime از تابع time استفاده کنید.

roohi b

تشکر بابت پاسخ

Aryoubarzan Yousefi replyپاسخ

سلام
چندین بار تلاش کردم ولی فایلهای غیر ویدئویی جلسات 10 و 11 دانلود نمیشوند! لطفا بررسی بفرمایید

جواد باقی

سلام
بنده تست کردم مشکلی نداشتن.
لطفا یک بار مودمتون رو خاموش کنید و بعد از روشن کردن دوباره تست کنید.

سید رضا ظریف نهاد

من هم همین مشکل رو دارم

mahdi kalhor replyپاسخ

من از دانشجوهای دوره php هستم
یک فرم تعریف کرده ام به شکل زیر :

ولی در php با آرایه های
_post
_get
_request
به آنها دسترسی ندارم
متاسفانه با جستحو هم چیزی پیدا نکردم؟
بهتون ایمیل هم زدم آقای آوند…کد هام انگار نمیاد

لقمان آوند

فایل هاتون رو زیپ کنید برام ایمیل کنید می بینیم …

Hossein Norouzi replyپاسخ

به این شکل هم میشه نوشتنش مینی پروژه آخر جلسه رو اگه اشتباه ننوشته باشم
خیلی کد کمتری داره و به طور دقیق زمان گذشته شده رو میده …

function agoTime($timestr){
    $curTime = new DateTime();
    $passTime = new DateTime($timestr);
    $e = $curTime->diff($passTime);
    echo $e->y.’  Year  ‘.$e->m .’  Month  ‘.$e->d .’  Day  ‘.$e->h .’  Hours  ‘.$e->m .’  Min  ‘.$e->s .’  Sec ‘.’  Ago 🙂  ‘;
}
agoTime(‘2001-03-29’);
محمدامین عطائی replyپاسخ

اواخر این قسمت استاد میگن سال حیوانی ! کلی خندیدم. امسال که برای کل ایران سال حیوانی بود.

Reza Zabet replyپاسخ

سلام وقت بخیر به اساتید عزیز مخصوصا آقای لقمان 🙂 آموزش ها بسیار عالی و جامع هستند
در این فصل قسمت مینی پروژه سوالی برام پیش اومد در قسمتی که $eTime = time() – $ts; رو قرار دادید
مقدار time() برابر با 1542230467 میشه حالا اگر متغییر $ts رو برابر با 100 کنیم چرا مقدار eTime مساوی با 100 میشه مگر مقدار تایم اینجا نشده 1542230467 پس 100 باید از این عدد کم بشه و ریخته بشه در eTime چرا 100 ریخته شده ؟
مرسی

Reza Zabet

یک سال بعد

امیرحسین replyپاسخ

سلام
من به یک مشکل جالبی خوردم
یک تاریخ مشخص کردم مثل 25-08-1998 و این تاریخ رو به تابع strtotime دادم

و یک شئی هم از کلاس DateTime کردم و با متد setDate همین تاریخ رو براش ست کرده
اما وقتی این دوتا رو echo میکنم دوتا تایم استمپ مختلف میگیرم که حتی تایم استمپ شئی با هربار رفرش صفحه تغییر میکنه

اما وقتی این دوتا تایم استمپ رو به تابع date میدم همین تاریخ ست شده بر میگرده
چرا این اتفاق افتاده ؟؟؟؟

<?php
date_default_timezone_set("Asia/Tehran");
echo strtotime("1998-08-25") . "<br>";
echo date("Y – F – d", strtotime("1998-08-25")) . "<br>";

$d1 = new DateTime();
$d1->setDate(1998, 8, 25);
echo $d1->getTimestamp() . "<br>";
echo date("Y – F – d", $d1->getTimestamp());


?>
لقمان آوند

آخر کدت var_dump($d1); کن. متوجه میشی چرا اینطوره. d1 داره ثانیه های طی شده روز رو حساب می کنه. تو بخش دوم فرمت تعین کن برا تاریخ که شامل ساعت و دقیقه و ثانیه نباشه

ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.