PDA

View Full Version : سوال: کم کردن از تاریخ شمسی به درستی



navid3d_69
جمعه 13 بهمن 1391, 14:05 عصر
سلام من توی دیتابیس تاریخ رو اینجوری ذخیره می کنم 12/09/1391 و می خوام یک کرن جاب بزارم که اگر هر رکوردی از تاریخش یک هفته گذشته بود حذف بشه چجوری باید از تاریخ کم کنم؟

Tarragon
جمعه 13 بهمن 1391, 14:35 عصر
شما باید تاریخ رو تو دیتابیس با timestap ست کنید ( همون تابع time() ) بعد واسه نمایش اون رو بصورت جلالی نمایش بدید.

navid3d_69
جمعه 13 بهمن 1391, 14:53 عصر
خب من تاریخ رو اینجوری تبدیل کردم و ذخیره کردم و نمایش میدم همون رو خب راهی نیست که بشه از همون کم کرد ؟

tehro0n
جمعه 13 بهمن 1391, 15:25 عصر
خب من تاریخ رو اینجوری تبدیل کردم و ذخیره کردم و نمایش میدم همون رو خب راهی نیست که بشه از همون کم کرد ؟

با این کدی که نوشتم می تونی تاریخ شمسی رو به time() تبدیل کنی، بعدش دیگه هر کاری می خوای باهاش بکن..
ولی راه درستش همون ذخیره اولیه به صورت time بود
حالا یا می خوای موقع ورودی یک روز کم کن یا در آخر عدد خروجی رو به ازای هر روز منهای 86400 کن

اگر اسکریپتی هم برای تاریخ می خوای می تونی از ابزار طراحی شده استفاده کنی.. http://www.toolsir.com/jalali


function jalali_to_gregorian($j_y,$j_m,$j_d){
$d_4=($j_y+1)%4;
$doy_j=($j_m<7)?(($j_m-1)*31)+$j_d:(($j_m-7)*30)+$j_d+186;
$d_33=(int)((($j_y-55)%132)*.0305);
$a=($d_33!=3 and $d_4<=$d_33)?287:286;
$b=(($d_33==1 or $d_33==2) and ($d_33==$d_4 or $d_4==1))?78:(($d_33==3 and $d_4==0)?80:79);
if((int)(($j_y-19)/63)==20){$a--;$b++;}
if($doy_j<=$a){
$gy=$j_y+621; $gd=$doy_j+$b;
}else{
$gy=$j_y+622; $gd=$doy_j-$a;
}
foreach(array(0,31,($gy%4==0)?29:28,31,30,31,30,31 ,31,30,31,30,31) as $gm=>$v){
if($gd<=$v)break;
$gd-=$v;
}
return mktime(0, 0, 0, $gm, $gd, $gy);
}

echo jalali_to_gregorian(1391,11,13);