چک کردن صحت تاریخ
سلام.خیلی وقت ها پیش میاد که از کاربر تاریخ دریافت میکنیم. مثلا تاریخ تولد یا هر تاریخ دیگه ای که مد نظر دارید. اما لازمه که یه بررسی سطحی بشه که آیا این یه تاریخ استاندارد و درست هست یا نه و اگه نبود اخطار بدیم. امروز قصد دارم تابع checkdate را به شما معرفی کنم. این تابع 3 ورودی دریافت میکنه و بصورت زیر تعریف می شود:
checkdate(month, day, year);
همونطور که مشخصه ابتدا عدد ماه سپس روز و بعد از اون سال را وارد میکنید و تابع در صورت معتبر بودن تاریخ مقدار true در غیر اینصورت مقدار false را بر میگرداند. به مثال زیر توجه کنید همه چیزو متوجه میشید:
<?php var_dump(checkdate(12, 31, -400)); echo "<br>"; var_dump(checkdate(2, 29, 2003)); echo "<br>"; var_dump(checkdate(2, 29, 2004)); ?>
اما خب تا اینجا همه چی خوبه اما این تابع از تاریخ شمسی پشتیبانی نمیکنه. پس خودم یه تابع با رویکردی متفاوت براتون نوشتم که تاریخ شمسی و جلالی هم پشتیبانی کنه. تابع بصورت زیر هست:
function checkdatejalali($date){ // Snippets.ir $ndate = explode('/', $date); if(count($ndate) == 3){ if(strlen($ndate[0]) == 2 || strlen($ndate[0]) == 4){ if((strlen($ndate[1]) == 2 || strlen($ndate[1]) == 1) && $ndate[1] >= 1 && $ndate[1] <= 12){ if((strlen($ndate[2]) == 2 || strlen($ndate[2]) == 1) && $ndate[2] >= 1 && $ndate[2] <= 31){ return true; } else return false; } else return false; } else return false; } else return false; }
یا بصورت ساده تر و فشرده تر:
function checkdatejalali($date){ // Snippets.ir $ndate = explode('/', $date); return count($ndate) == 3 && (strlen($ndate[0]) == 2 || strlen($ndate[0]) == 4) && ((strlen($ndate[1]) == 2 || strlen($ndate[1]) == 1) && $ndate[1] >= 1 && $ndate[1] <= 12) && ((strlen($ndate[2]) == 2 || strlen($ndate[2]) == 1) && $ndate[2] >= 1 && $ndate[2] <= 31); }
تابع بالا تاریخ را بصورت رشته دریافت می کنه و نیازی نیست که شما تاریخ را جدا سازی کنید، خودش این کار را انجام می دهد. تقریبا تمام حالت های تاریخ فارسی را در نظر گرفته است. با این حال اگر کاربران عزیز مشکلی در تابع مشاهده کردند اطلاع بدند تا تصحیح شود. قبل از اینکه از حضورتون مرخص بشم به مثال های زیر توجه کنید:
var_dump(checkdatejalali("1393/1/31")); var_dump(checkdatejalali("1393/12/54")); var_dump(checkdatejalali("1393/13/31")); var_dump(checkdatejalali("1393/12/1")); var_dump(checkdatejalali("93/12/01"));
و خروجی اون بصورت زیر هست :
bool(true) bool(false) bool(false) bool(true) bool(true)
امیدوارم کاربردی بوده باشه و استفاده ببرید . ما را از دیدگاه های گرمتان محروم نکنید!
5 thoughts on “چک کردن صحت تاریخ”
بسیار عالی
سپاس
ممنونم از شما
سلام چگونه شرط بگذاریم که اگر خروجی true بود کار خاصی انجام بده.؟
سلام. به شکل زیر می تونید از دستور if استفاده کنید.