PDA

View Full Version : سوال: به دست آوردن محدوده 2 تاریخ و مقایسه اینکه آیا امروز در مابین اون تاریخ هست یا نه؟



mostafa_shoakry
شنبه 02 دی 1391, 15:17 عصر
با سلام خدمت دوستان و اساتید محترم
می خوام یکیو تو سایت واسش تاریخ انقضای فعالیت بزارم. مثلا یکیو می خوام که فعالیتش از تاریخ مثلا 91/10/5 تا تاریخ 91/10/20 متوقف بشه و تا اون تاریخ نرسیده مثلا یه پیغام چاپ کنه.
هم تاریخ شروع و تاریخ اتمام هر دو به صورت شمسی هست.
دوستان لطفا کمک کنین خیلی مهمه :افسرده:

siavashsay
شنبه 02 دی 1391, 17:29 عصر
در مورد تابع strtotime تحقیق کنید و نتیجه رو اعمال کنید ! :)

mamali-mohammad
شنبه 02 دی 1391, 19:48 عصر
در کوئری که میگیر از دستور BETWEEN استفاده کن

nsco_nsco
شنبه 02 دی 1391, 21:45 عصر
سلام به نظرم بهترین کار کلا در کلیه زبان های برنامه نویسی برای این کار این هست تو برداری روزای سال را بشماری یعنی همون 365 روز بعد کارت رو روش کنی و بعد تغییر بدی به تاریخ معمولی این راه بهترین راه است و برای ساخت روزشمار هم بهتره موفق باشید

mostafa_shoakry
یک شنبه 03 دی 1391, 06:28 صبح
Between رو استفاده نکردم اونو هم تستش می کنم.


در مورد strtotime هم اونو تستش کردم جواب نداد.اگه یه نمونه داری بیزحمت بهم بفرست.


سلام به نظرم بهترین کار کلا در کلیه زبان های برنامه نویسی برای این کار این هست تو برداری روزای سال را بشماری یعنی همون 365 روز بعد کارت رو روش کنی و بعد تغییر بدی به تاریخ معمولی این راه بهترین راه است و برای ساخت روزشمار هم بهتره موفق باشید


میشه یه مثال بزنی؟

matrixhassan
یک شنبه 03 دی 1391, 10:14 صبح
با سلام

من یه روشی رو میگم شاید کارت راه افتاد

در زمان ثبت کاربر تاریخ رو با time() میگیری و این میشه تاریخ ثبت و تاریخ انقضارو مثلا 20 روزه دیگه ر ره به شکل time() + (60*60*24*20) حساب میکنی میشه تاریخ انقضا بعد هر دورو تو پایگاه داده ذخیره میکنه بعد میای توی هر صفحه که لازم داری بررسی بشه کد زیرو مینویسی :(البته بعد از اینکه اطلاعاتو خوندی)




date_default_timezone_set('Asia/Tehran');
$timethis = time();


if (intval($row["insertdate"]) <= $timethis && intval($row["expiredate"]) > $timethis)
{
//code
}



و برای نمایش بصورت شمسی از تابع jdate که باید فایلشو از سایت زیر بگیری .



http://jdf.scr.ir/

nsco_nsco
یک شنبه 03 دی 1391, 17:09 عصر
سلام ببین بهترین راه اینه مخصوصا برای سال های شمسی بیای کل ماهها را بشماری که کلشش میشه 365 یا 366 برای کبیسه
بعد میای جمع و منها و هر کاری داری می کنی بعد بر می گردونی به حالت اولش مثلا روز 32 سال روز اول اردیبهشت هست به همین سادگی موفق باشید :قلب:

siavashsay
یک شنبه 03 دی 1391, 17:34 عصر
دوست عزیز !
من در مورد تاریخ فارسی باید بگم این عدد تابع یعنی strtotime کار نمیکنه ! چون php از سال 1877 گمونم به بعد رو تبدیل میکنه که تاریخ ما 1300 هست !
بگذریم . به هر حال شما باید روز ثبت نام یک فرد تاریخ اون روز رو به میلادی بگیری و در دیتابیس ذخیره کنی !
بعد در صفحه لاگین کدی رو بنویسی که چک کنه کاربر چند روز هست که ثبت نام کرده ! و بعد میتونی نسبت به روزهای بدست آمده هر حرکتی رو که خواستی انجام بدی !
بنده یک کد خیلی ساده برات نوشتم که در این کد :
- زمان ثبت نام تاریخ به میلادی در دیتابیس همراه بقیه اطلاعات ذخیره و expire برابر با 0 داده میشه !
- زمان لاگین روزهای ثبت نام کاربر بدست میاد و اگه بیشتر از 30 روز شده باشه کاربر منقضی میشه ! یعنی expire برابر 1 میشه !
کد :


// When Registering
// Db Connect...
$username=$_POST['username'];
$pssword=$_POST['password'];
$reg_date=date("Y-m-d");
mysql_query("INSERT INTO `users` (`username`,`password`,`reg_date`,`expire`) VALUES('$username','$password','$reg_date','0')");

// When Logged in
function s2t($date){ // ساخت تابع تبدیل تاریخ به عدد روز
$date=strtotime($date);
$date=$date/86400;
$date=round($date);
return $date;
}
$sql=mysql_query("SELECT * FROM `users` WHERE `username`='$username'");
$obj=mysql_fetch_object($sql);
$rd=$obj->reg_date; // دریافت روز ثبت نام از دیتابیس
$today=date("Y-m-d"); // بدست آوردن تاریخ امروز
$rdNum=s2t($rd); // تبدیل تاریخ روز ثبت نام به عدد
$todayNum=s2t($today); // تبدیل تاریخ امروز به عدد
$registered_days=$todayNum-$rdNum; // بدست آوردن روزهایی که از تاریخ ثبت نام گذشته است - مثلا 28 روز
if($registered_days>30){ // چک کردن روزهای ثبت نام که اگر بیشتر از 30 روز بود کاربر منقضی شود
mysql_query("UPDATE `users` SET `expire`='1' WHERE `username`='$username'");
}



حالا دیگه شما خودتون ببینید که به چی نیاز دارید و اون رو اعمال کنید !