بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
تبدیل تاریخ شمسی به میلادی
با سلام؛
میخواستم بپرسم که چجوری میشه شبیه روش استاد، تاریخ شمسی رو به میلادی تبدیل کرد؟ توی سایتای مختلف الگوریتم های فوق العاده پیچیده وجود داره که آدم متوجه عملکردش نمیشه و ممکنه خطا داشته باشه. اما اگه شبیه الگوریتم استاد باشه هم بهینه هست و هم بدون خطا.
لطفا راهنمایی کنید.
ممنون
برای این سوال 2 پاسخ وجود دارد.
مشاهده پاسخ صحیح
پاسخ به سوال
سجاد عباسی
9 سال پیش
+1
0
پیدا کردن سال های جلالی کبیسه خیلی سخت تر از پیدا کردن سال های کبیسه میلادی هست و نمیشه به اون راحتی پیادش کرد.
پاسخ به سوال
Ebi
9 سال پیش
+1
0
پاسخ صحیح
سلام من با این کار میکنم تا حالا که به مشکلی بر نخورده.امیدوارم برای شمام مفید باشه
function jalali_to_gregorian($jy,$jm,$jd,$mod=''){
date_default_timezone_set('GMT');
$gy=($jy<=979)?621:1600;
$jy-=($jy<=979)?0:979;
$days=(365*$jy) +(((int)($jy/33))*8) +((int)((($jy%33)+3)/4))
+78 +$jd +(($jm<7)?($jm-1)*31:(($jm-7)*30)+186);
$gy+=400*((int)($days/146097));
$days%=146097;
if($days > 36524){
$gy+=100*((int)(--$days/36524));
$days%=36524;
if($days >= 365)$days++;
}
$gy+=4*((int)(($days)/1461));
$days%=1461;
$gy+=(int)(($days-1)/365);
if($days > 365)$days=($days-1)%365;
$gd=$days+1;
foreach(array(0,31,(($gy%4==0 and $gy%100!=0) or ($gy%400==0))?29:28
,31,30,31,30,31,31,30,31,30,31) as $gm=>$v){
if($gd<=$v)break;
$gd-=$v;
}
return($mod=='')?array("year_miladi"=>$gy,"month_miladi"=>$gm,"day_miladi"=>$gd):$gy.$mod.$gm.$mod.$gd;
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .