بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

تبدیل تاریخ شمسی به میلادی

مدیریت گفتگو
Pouya Asgharnejad Tehran 9 سال پیش
آخرین تغییر: 9 سال پیش

با سلام؛

میخواستم بپرسم که چجوری میشه شبیه روش استاد، تاریخ شمسی رو به میلادی تبدیل کرد؟ توی سایتای مختلف الگوریتم های فوق العاده پیچیده وجود داره که آدم متوجه عملکردش نمیشه و ممکنه خطا داشته باشه. اما اگه شبیه الگوریتم استاد باشه هم بهینه هست و هم بدون خطا.

لطفا راهنمایی کنید.

ممنون

نظرات

پاسخ‌ها 2

مشاهده پاسخ صحیح
سجاد عباسی 9 سال پیش

پیدا کردن سال های جلالی کبیسه خیلی سخت تر از پیدا کردن  سال های کبیسه میلادی هست و نمیشه به اون راحتی پیادش کرد.

نظرات

Ebi 9 سال پیش

 پاسخ صحیح

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

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;
}

نظرات

این سورس معروف jdf هست و معتبره؛ بیزحمت اگه میتونید خط به خط این کد پیچیده رو تفسیر کنید!
Ebi 9 سال پیش
نیاز به تفسیرش پیدا نکردم وگرنه لازم میشد حتما تفسیر میکردم.همین که کارمو راه میندازه کافیه

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .