مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

hossein_n

عضویت از 1397/08/03

خروجی تابع شمسی سازی

  • پنجشنبه 3 آبان 1397
  • 21:07
تشکر میکنم

درود بر برنامه نویسان عزیز
من برای شمسی سازی در سایتم از تابع

function gregorian_to_jalali($gy,$gm,$gd,$mod=''){
 $g_d_m=array(0,31,59,90,120,151,181,212,243,273,30  4,334);
 if($gy>1600){
  $jy=979;
  $gy-=1600;
 }else{
  $jy=0;
  $gy-=621;
 }
 $gy2=($gm>2)?($gy+1):$gy;
 $days=(365*$gy) +((int)(($gy2+3)/4)) -((int)(($gy2+99)/100)) +((int)(($gy2+399)/400)) -80 +$gd +$g_d_m[$gm-1];
 $jy+=33*((int)($days/12053)); 
 $days%=12053;
 $jy+=4*((int)($days/1461));
 $days%=1461;
 if($days > 365){
  $jy+=(int)(($days-1)/365);
  $days=($days-1)%365;
 }
 $jm=($days < 186)?1+(int)($days/31):7+(int)(($days-186)/30);
 $jd=1+(($days < 186)?($days%31):(($days-186)%30));
 return($mod=='')?array($jy,$jm,$jd):$jy.$mod.$jm.$  mod.$jd;
}

استفاده میکنم
ورودی تابع به این شکل هست

$gy = 1984;
$gm =05;
$gd = 26;

خروجی تابع به این شکل هست
1363/3/5
اگر بخام خروجی تابع به این صورت بشه
1363/03/05
باید کدوم پارامترها رو تغییر بدم
با تشکر

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

farshadfarokhi

عضویت از 1395/11/20

  • شنبه 5 آبان 1397
  • 12:49

سلام

توی اون دو خط آخر قبل از return داره ماه و روز رو محاسبه میکنه. خروجی اونها یک عدد هست برای همین اون صفر قبل عدد رو نداره. این دو خط پایین:

 $jm=($days < 186)?1+(int)($days/31):7+(int)(($days-186)/30);
 $jd=1+(($days < 186)?($days%31):(($days-186)%30));

یه کار خیلی خیلی ساده این هست که بعد از محاسبه، چک کنید که اگر عدد یک رقمی بود قبلش یک صفر اضافه بشه و خروجی به صورت string باشه.

بعضی کلاسهای تبدیل تاریخ هم هست که میتونید برای خروجیشون یک فرمت تعریف کنید که دقیقا با فرمتهای تابع date تعریف میشن.

کاربر سایت

amin7350

عضویت از 1397/08/14

  • دوشنبه 14 آبان 1397
  • 10:38

سلام. البته من خیلی در زمینه php تازه کارم. ولی برای آخرین کارم از jdf استفاده کردم که خودش اینکارو انجام میده و همه چی رو به صورت آماده داره

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)