PDA

View Full Version : مبتدی: اشتباه محاسبه کردن تفریق!!!!!



mialdf
پنج شنبه 05 دی 1392, 20:39 عصر
این تابع ای که مشاهده میکنید تعداد روزهای باقیمانده از یک کابر رو نشون میده
به این صورت که :
$strdate1*شماره روز* تاریخ انتضاء
$stardate2*شماره روز*تاریخ فعلی

بعد این دو شماره روز بدست امده رو از هم کم میکنه و نتیجه نهایی رو به عنوان *روز های باقی مانده* به دست میاره
مشکل ایجاست که نتیجه همیشه صفر میشه !!
در صورتی که *شماره روز از سال انقضاء* و * شماره روز از سال تاریخ فعلی* رو درست محاسبه میکنه اما تو تفریق این دو عدد اشتباه میکنه و همیشه 0 میشه جواب!!!
مثلا اگه تاریخ انتضاء 1392/02/30 باشه مقدار اول میشه 61
و تاریخ فعلی 1392/01/30 باشه مقدار دوم بدست امده برابر 30 میشه
و باید 61 رو از 30 کم کنه و *تعداد روز های باقیمانده* برابر 31 بشه !!
114452


function strdate($strdate)
{
$day=(($_SESSION['gvalue']/'3600')/'24');
$date = strtotime(date("Y/m/d", $_SESSION['txtstart']) . " +".$day."days");
$strdate1= jdate('z',$date);
intval($strdate1);
echo "<br>Start Day:".$strdate1;

$strdate2= jdate('z',date());
intval($strdate2);
echo "<br>Exp Day:".$strdate2;

$strdate=$strdate1-$strdate2;
echo "<br>Res : ".$strdate."\n";
}

mostafa272
جمعه 06 دی 1392, 09:13 صبح
اولا با تفریق عادی نمی تونی این کار رو انجام بدی. دوم اینکه تابع jdate تاریخ رو به صورت فرمت فارسی بر می گردونه .
یه سری روش برای تفریق تاریخ ها تو لینکهای زیر گفته شده ولی خب اول باید فرمت تاریخ رو شبیه مدل میلادی در بیاری:

http://stackoverflow.com/questions/10469037/subtracting-two-dates-in-php

http://stackoverflow.com/questions/20365422/php-subtract-date-time

mialdf
جمعه 06 دی 1392, 12:24 عصر
نکته در استفاده از تایع strtotime بود
باید تاریخ رو به صورت عدد ذخیره میکردم و سپس تفریق انجام میشد
کد بدست امده:


$day=(($_SESSION['gvalue']/'3600')/'24');
$enddate = strtotime(date("Y/m/d", $_SESSION['txtstart']) . " +".$day."days");
$nowdate = strtotime(date('Y/m/d'));
$len=$enddate-$nowdate;
echo intval($len /(24*60*60));
متشکرم دوست عزیز
mostafa272 (http://barnamenevis.org/member.php?91616-mostafa272)

arta.nasiri
جمعه 06 دی 1392, 16:14 عصر
سلام

با اینکه مشکلتون حل شده!! ولی از این روشم میتونید استفاده کنید


$date1 = new DateTime('12/15/2013');
$date2 = new DateTime('12/29/2013');
$diff = $date1->diff($date2);
print_r($diff);