نمایش نتایج 1 تا 8 از 8

نام تاپیک: کلاس Jdf در لاراول

  1. #1

    کلاس Jdf در لاراول

    با سلام

    من ماژول Jdf (تاریخ شمسی) به صورت یک کلاس در آوردم


    <?php


    namespace App\lib;


    class JDF
    {
    public function jdate($format,$timestamp='',$none='',$time_zone='A sia/Tehran',$tr_num='fa'){

    $T_sec=0;/* <= رفع خطاي زمان سرور ، با اعداد '+' و '-' بر حسب ثانيه */

    if($time_zone!='local')date_default_timezone_set(( $time_zone==='')?'Asia/Tehran':$time_zone);
    $ts=$T_sec+(($timestamp==='' or $timestamp=='now')?time():$this->tr_num($timestamp));
    $date=explode('_',date('H_i_j_n_O_P_s_w_Y',$ts));
    list($j_y,$j_m,$j_d)=$this->gregorian_to_jalali($date[8],$date[3],$date[2]);
    $doy=($j_m<7)?(($j_m-1)*31)+$j_d-1:(($j_m-7)*30)+$j_d+185;
    $kab=(((($j_y%33)%4)-1)==((int)(($j_y%33)*0.05)))?1:0;
    $sl=strlen($format);
    $out='';
    for($i=0; $i<$sl; $i++){
    $sub=substr($format,$i,1);
    if($sub=='\\'){
    $out.=substr($format,++$i,1);
    continue;
    }
    switch($sub){

    case'E':case'R':case'x':case'X':
    $out.='http://jdf.scr.ir';
    break;

    case'B':case'e':case'g':
    case'G':case'h':case'I':
    case'T':case'u':case'Z':
    $out.=date($sub,$ts);
    break;

    case'a':
    $out.=($date[0]<12)?'ق.ظ':'ب.ظ';
    break;

    case'A':
    $out.=($date[0]<12)?'قبل از ظهر':'بعد از ظهر';
    break;

    case'b':
    $out.=(int)($j_m/3.1)+1;
    break;

    case'c':
    $out.=$j_y.'/'.$j_m.'/'.$j_d.' ،'.$date[0].':'.$date[1].':'.$date[6].' '.$date[5];
    break;

    case'C':
    $out.=(int)(($j_y+99)/100);
    break;

    case'd':
    $out.=($j_d<10)?'0'.$j_d:$j_d;
    break;

    case'D':
    $out.=jdate_words(array('kh'=>$date[7]),' ');
    break;

    case'f':
    $out.=jdate_words(array('ff'=>$j_m),' ');
    break;

    case'F':
    $out.=jdate_words(array('mm'=>$j_m),' ');
    break;

    case'H':
    $out.=$date[0];
    break;

    case'i':
    $out.=$date[1];
    break;

    case'j':
    $out.=$j_d;
    break;

    case'J':
    $out.=jdate_words(array('rr'=>$j_d),' ');
    break;

    case'k';
    $out.=tr_num(100-(int)($doy/($kab+365)*1000)/10,$tr_num);
    break;

    case'K':
    $out.=tr_num((int)($doy/($kab+365)*1000)/10,$tr_num);
    break;

    case'l':
    $out.=jdate_words(array('rh'=>$date[7]),' ');
    break;

    case'L':
    $out.=$kab;
    break;

    case'm':
    $out.=($j_m>9)?$j_m:'0'.$j_m;
    break;

    case'M':
    $out.=jdate_words(array('km'=>$j_m),' ');
    break;

    case'n':
    $out.=$j_m;
    break;

    case'N':
    $out.=$date[7]+1;
    break;

    case'o':
    $jdw=($date[7]==6)?0:$date[7]+1;
    $dny=364+$kab-$doy;
    $out.=($jdw>($doy+3) and $doy<3)?$j_y-1:(((3-$dny)>$jdw and $dny<3)?$j_y+1:$j_y);
    break;

    case'O':
    $out.=$date[4];
    break;

    case'p':
    $out.=jdate_words(array('mb'=>$j_m),' ');
    break;

    case'P':
    $out.=$date[5];
    break;

    case'q':
    $out.=jdate_words(array('sh'=>$j_y),' ');
    break;

    case'Q':
    $out.=$kab+364-$doy;
    break;

    case'r':
    $key=jdate_words(array('rh'=>$date[7],'mm'=>$j_m));
    $out.=$date[0].':'.$date[1].':'.$date[6].' '.$date[4].' '.$key['rh'].'، '.$j_d.' '.$key['mm'].' '.$j_y;
    break;

    case's':
    $out.=$date[6];
    break;

    case'S':
    $out.='ام';
    break;

    case't':
    $out.=($j_m!=12)?(31-(int)($j_m/6.5)):($kab+29);
    break;

    case'U':
    $out.=$ts;
    break;

    case'v':
    $out.=jdate_words(array('ss'=>($j_y%100)),' ');
    break;

    case'V':
    $out.=jdate_words(array('ss'=>$j_y),' ');
    break;

    case'w':
    $out.=($date[7]==6)?0:$date[7]+1;
    break;

    case'W':
    $avs=(($date[7]==6)?0:$date[7]+1)-($doy%7);
    if($avs<0)$avs+=7;
    $num=(int)(($doy+$avs)/7);
    if($avs<4){
    $num++;
    }elseif($num<1){
    $num=($avs==4 or $avs==((((($j_y%33)%4)-2)==((int)(($j_y%33)*0.05)))?5:4))?53:52;
    }
    $aks=$avs+$kab;
    if($aks==7)$aks=0;
    $out.=(($kab+363-$doy)<$aks and $aks<3)?'01':(($num<10)?'0'.$num:$num);
    break;

    case'y':
    $out.=substr($j_y,2,2);
    break;

    case'Y':
    $out.=$j_y;
    break;

    case'z':
    $out.=$doy;
    break;

    default:$out.=$sub;
    }
    }
    return($tr_num!='en')?tr_num($out,'fa','.'):$out;
    }

    function jstrftime($format,$timestamp='',$none='',$time_zon e='Asia/Tehran',$tr_num='fa'){

    $T_sec=0;/* <= رفع خطاي زمان سرور ، با اعداد '+' و '-' بر حسب ثانيه */

    if($time_zone!='local')date_default_timezone_set(( $time_zone==='')?'Asia/Tehran':$time_zone);
    $ts=$T_sec+(($timestamp==='')?time():tr_num($times tamp));
    $date=explode('_',date('h_H_i_j_n_s_w_Y',$ts));
    list($j_y,$j_m,$j_d)=gregorian_to_jalali($date[7],$date[4],$date[3]);
    $doy=($j_m<7)?(($j_m-1)*31)+$j_d-1:(($j_m-7)*30)+$j_d+185;
    $kab=(((($j_y%33)%4)-1)==((int)(($j_y%33)*0.05)))?1:0;
    $sl=strlen($format);
    $out='';
    for($i=0; $i<$sl; $i++){
    $sub=substr($format,$i,1);
    if($sub=='%'){
    $sub=substr($format,++$i,1);
    }else{
    $out.=$sub;
    continue;
    }
    switch($sub){

    /* Day */
    case'a':
    $out.=jdate_words(array('kh'=>$date[6]),' ');
    break;

    case'A':
    $out.=jdate_words(array('rh'=>$date[6]),' ');
    break;

    case'd':
    $out.=($j_d<10)?'0'.$j_d:$j_d;
    break;

    case'e':
    $out.=($j_d<10)?' '.$j_d:$j_d;
    break;

    case'j':
    $out.=str_pad($doy+1,3,0,STR_PAD_LEFT);
    break;

    case'u':
    $out.=$date[6]+1;
    break;

    case'w':
    $out.=($date[6]==6)?0:$date[6]+1;
    break;

    /* Week */
    case'U':
    $avs=(($date[6]<5)?$date[6]+2:$date[6]-5)-($doy%7);
    if($avs<0)$avs+=7;
    $num=(int)(($doy+$avs)/7)+1;
    if($avs>3 or $avs==1)$num--;
    $out.=($num<10)?'0'.$num:$num;
    break;

    case'V':
    $avs=(($date[6]==6)?0:$date[6]+1)-($doy%7);
    if($avs<0)$avs+=7;
    $num=(int)(($doy+$avs)/7);
    if($avs<4){
    $num++;
    }elseif($num<1){
    $num=($avs==4 or $avs==((((($j_y%33)%4)-2)==((int)(($j_y%33)*0.05)))?5:4))?53:52;
    }
    $aks=$avs+$kab;
    if($aks==7)$aks=0;
    $out.=(($kab+363-$doy)<$aks and $aks<3)?'01':(($num<10)?'0'.$num:$num);
    break;

    case'W':
    $avs=(($date[6]==6)?0:$date[6]+1)-($doy%7);
    if($avs<0)$avs+=7;
    $num=(int)(($doy+$avs)/7)+1;
    if($avs>3)$num--;
    $out.=($num<10)?'0'.$num:$num;
    break;

    /* Month */
    case'b':
    case'h':
    $out.=jdate_words(array('km'=>$j_m),' ');
    break;

    case'B':
    $out.=jdate_words(array('mm'=>$j_m),' ');
    break;

    case'm':
    $out.=($j_m>9)?$j_m:'0'.$j_m;
    break;

    /* Year */
    case'C':
    $tmp=(int)($j_y/100);
    $out.=($tmp>9)?$tmp:'0'.$tmp;
    break;

    case'g':
    $jdw=($date[6]==6)?0:$date[6]+1;
    $dny=364+$kab-$doy;
    $out.=substr(($jdw>($doy+3) and $doy<3)?$j_y-1:(((3-$dny)>$jdw and $dny<3)?$j_y+1:$j_y),2,2);
    break;

    case'G':
    $jdw=($date[6]==6)?0:$date[6]+1;
    $dny=364+$kab-$doy;
    $out.=($jdw>($doy+3) and $doy<3)?$j_y-1:(((3-$dny)>$jdw and $dny<3)?$j_y+1:$j_y);
    break;

    case'y':
    $out.=substr($j_y,2,2);
    break;

    case'Y':
    $out.=$j_y;
    break;

    /* Time */
    case'H':
    $out.=$date[1];
    break;

    case'I':
    $out.=$date[0];
    break;

    case'l':
    $out.=($date[0]>9)?$date[0]:' '.(int)$date[0];
    break;

    case'M':
    $out.=$date[2];
    break;

    case'p':
    $out.=($date[1]<12)?'قبل از ظهر':'بعد از ظهر';
    break;

    case'P':
    $out.=($date[1]<12)?'ق.ظ':'ب.ظ';
    break;

    case'r':
    $out.=$date[0].':'.$date[2].':'.$date[5].' '.(($date[1]<12)?'قبل از ظهر':'بعد از ظهر');
    break;

    case'R':
    $out.=$date[1].':'.$date[2];
    break;

    case'S':
    $out.=$date[5];
    break;

    case'T':
    $out.=$date[1].':'.$date[2].':'.$date[5];
    break;

    case'X':
    $out.=$date[0].':'.$date[2].':'.$date[5];
    break;

    case'z':
    $out.=date('O',$ts);
    break;

    case'Z':
    $out.=date('T',$ts);
    break;

    /* Time and Date Stamps */
    case'c':
    $key=jdate_words(array('rh'=>$date[6],'mm'=>$j_m));
    $out.=$date[1].':'.$date[2].':'.$date[5].' '.date('P',$ts).' '.$key['rh'].'، '.$j_d.' '.$key['mm'].' '.$j_y;
    break;

    case'D':
    $out.=substr($j_y,2,2).'/'.(($j_m>9)?$j_m:'0'.$j_m).'/'.(($j_d<10)?'0'.$j_d:$j_d);
    break;

    case'F':
    $out.=$j_y.'-'.(($j_m>9)?$j_m:'0'.$j_m).'-'.(($j_d<10)?'0'.$j_d:$j_d);
    break;

    case's':
    $out.=$ts;
    break;

    case'x':
    $out.=substr($j_y,2,2).'/'.(($j_m>9)?$j_m:'0'.$j_m).'/'.(($j_d<10)?'0'.$j_d:$j_d);
    break;

    /* Miscellaneous */
    case'n':
    $out.="\n";
    break;

    case't':
    $out.="\t";
    break;

    case'%':
    $out.='%';
    break;

    default:$out.=$sub;
    }
    }
    return($tr_num!='en')?tr_num($out,'fa','.'):$out;
    }

    function jmktime($h='',$m='',$s='',$jm='',$jd='',$jy='',$no ne='',$timezone='Asia/Tehran'){
    if($timezone!='local')date_default_timezone_set($t imezone);
    if($h===''){
    return time();
    }else{
    list($h,$m,$s,$jm,$jd,$jy)=explode('_',tr_num($h.' _'.$m.'_'.$s.'_'.$jm.'_'.$jd.'_'.$jy));
    if($m===''){
    return mktime($h);
    }else{
    if($s===''){
    return mktime($h,$m);
    }else{
    if($jm===''){
    return mktime($h,$m,$s);
    }else{
    $jdate=explode('_',jdate('Y_j','','',$timezone,'en '));
    if($jd===''){
    list($gy,$gm,$gd)=jalali_to_gregorian($jdate[0],$jm,$jdate[1]);
    return mktime($h,$m,$s,$gm);
    }else{
    if($jy===''){
    list($gy,$gm,$gd)=jalali_to_gregorian($jdate[0],$jm,$jd);
    return mktime($h,$m,$s,$gm,$gd);
    }else{
    list($gy,$gm,$gd)=jalali_to_gregorian($jy,$jm,$jd) ;
    return mktime($h,$m,$s,$gm,$gd,$gy);
    }
    }
    }
    }
    }
    }
    }

    function jgetdate($timestamp='',$none='',$timezone='Asia/Tehran',$tn='en'){
    $ts=($timestamp==='')?time():tr_num($timestamp);
    $jdate=explode('_',jdate('F_G_i_j_l_n_s_w_Y_z',$ts ,'',$timezone,$tn));
    return array(
    'seconds'=>tr_num((int)tr_num($jdate[6]),$tn),
    'minutes'=>tr_num((int)tr_num($jdate[2]),$tn),
    'hours'=>$jdate[1],
    'mday'=>$jdate[3],
    'wday'=>$jdate[7],
    'mon'=>$jdate[5],
    'year'=>$jdate[8],
    'yday'=>$jdate[9],
    'weekday'=>$jdate[4],
    'month'=>$jdate[0],
    0=>tr_num($ts,$tn)
    );
    }

    function jcheckdate($jm,$jd,$jy){
    list($jm,$jd,$jy)=explode('_',tr_num($jm.'_'.$jd.' _'.$jy));
    $l_d=($jm==12)?((((($jy%33)%4)-1)==((int)(($jy%33)*0.05)))?30:29):31-(int)($jm/6.5);
    return($jm>12 or $jd>$l_d or $jm<1 or $jd<1 or $jy<1)?false:true;
    }

    function tr_num($str,$mod='en',$mf='٫'){
    $num_a=array('0','1','2','3','4','5','6','7','8',' 9','.');
    $key_a=array('۰','۱','۲','۳','۴','۵','۶',' ','۸','۹',$mf);
    return($mod=='fa')?str_replace($num_a,$key_a,$str) :str_replace($key_a,$num_a,$str);
    }

    function jdate_words($array,$mod=''){
    foreach($array as $type=>$num){
    $num=(int)tr_num($num);
    switch($type){

    case'ss':
    $sl=strlen($num);
    $xy3=substr($num,2-$sl,1);
    $h3=$h34=$h4='';
    if($xy3==1){
    $p34='';
    $k34=array('ده','یازده','دوازده','س زده','چهارده','پانزده','شانزد ه','هفده','هجده','نوزده');
    $h34=$k34[substr($num,2-$sl,2)-10];
    }else{
    $xy4=substr($num,3-$sl,1);
    $p34=($xy3==0 or $xy4==0)?'':' و ';
    $k3=array('','','بیست','سی','چهل','پنج اه','شصت','هفتاد','هشتاد','نود') ;
    $h3=$k3[$xy3];
    $k4=array('','یک','دو','سه','چهار','پن ج','شش','هفت','هشت','نه');
    $h4=$k4[$xy4];
    }
    $array[$type]=(($num>99)?str_replace(array('12','13','14','19', '20')
    ,array('هزار و دویست','هزار و سیصد','هزار و چهارصد','هزار و نهصد','دوهزار')
    ,substr($num,0,2)).((substr($num,2,2)=='00')?'':' و '):'').$h3.$p34.$h34.$h4;
    break;

    case'mm':
    $key=array('فروردین','اردیبهشت','خ رداد','تیر','مرداد','شهریور','م هر','آبان','آذر','دی','بهمن','اس ند');
    $array[$type]=$key[$num-1];
    break;

    case'rr':
    $key=array('یک','دو','سه','چهار','پنج ','شش','هفت','هشت','نه','ده','یازد ه','دوازده','سیزده'
    ,'چهارده','پانزده','شانزده','ه ده','هجده','نوزده','بیست','بیس و یک','بیست و دو','بیست و سه'
    ,'بیست و چهار','بیست و پنج','بیست و شش','بیست و هفت','بیست و هشت','بیست و نه','سی','سی و یک');
    $array[$type]=$key[$num-1];
    break;

    case'rh':
    $key=array('یکشنبه','دوشنبه','سه شنبه','چهارشنبه','پنجشنبه','ج عه','شنبه');
    $array[$type]=$key[$num];
    break;

    case'sh':
    $key=array('مار','اسب','گوسفند','می ون','مرغ','سگ','خوک','موش','گاو', 'پلنگ','خرگوش','نهنگ');
    $array[$type]=$key[$num%12];
    break;

    case'mb':
    $key=array('حمل','ثور','جوزا','سرطا ','اسد','سنبله','میزان','عقرب',' قوس','جدی','دلو','حوت');
    $array[$type]=$key[$num-1];
    break;

    case'ff':
    $key=array('بهار','تابستان','پاییز ','زمستان');
    $array[$type]=$key[(int)($num/3.1)];
    break;

    case'km':
    $key=array('فر','ار','خر','تی‍','مر',' شه‍','مه‍','آب‍','آذ','دی','به ','اس‍');
    $array[$type]=$key[$num-1];
    break;

    case'kh':
    $key=array('ی','د','س','چ','پ','ج','ش');
    $array[$type]=$key[$num];
    break;

    default:$array[$type]=$num;
    }
    }
    return($mod==='')?$array:implode($mod,$array);
    }

    function gregorian_to_jalali($gy,$gm,$gd,$mod=''){
    list($gy,$gm,$gd)=explode('_',tr_num($gy.'_'.$gm.' _'.$gd));/* <= Extra :اين سطر ، جزء تابع اصلي نيست */
    $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;
    $jy+=(int)(($days-1)/365);
    if($days > 365)$days=($days-1)%365;
    if($days < 186){
    $jm=1+(int)($days/31);
    $jd=1+($days%31);
    }else{
    $jm=7+(int)(($days-186)/30);
    $jd=1+(($days-186)%30);
    }
    return($mod==='')?array($jy,$jm,$jd):$jy .$mod .$jm .$mod .$jd;
    }

    public function jalali_to_gregorian($jy,$jm,$jd,$mod=''){
    list($jy,$jm,$jd)=explode('_',tr_num($jy.'_'.$jm.' _'.$jd));/* <= Extra :اين سطر ، جزء تابع اصلي نيست */
    if($jy > 979){
    $gy=1600;
    $jy-=979;
    }else{
    $gy=621;
    }
    $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($gy,$gm,$gd):$gy .$mod .$gm .$mod .$gd;
    }
    }



    در لاراول هم به این صورت فراخوانی کردم


    <?php $i=1; $Jdf=new \App\lib\JDF()?>

    <div >
    {{$Jdf->jdate('Y',$value->created_time)}}

    </div>


    ولی اررور میده . نمی دونم چرا

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

  2. #2
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: کلاس Jdf در لاراول

    شما کلی اررور سینتکس داری
    بهتره تو یه ide نگاه کنی کد رو که اررور ها رو نشونت بده

    مثلا


    function jstrftime($format,$timestamp='',$none='',$time_zon  e='Asia/Tehran',$tr_num='fa')


    اگه دقت کنی

    $time_zon  e

    نوشته که اررور ایجاد میکنه که باید بشه

    $time_zone

  3. #3

    نقل قول: کلاس Jdf در لاراول


    <?php
    namespace App\lib;


    class Jdf
    {

    public function jdate($format,$timestamp='',$none='',$time_zone='A sia/Tehran',$tr_num='fa'){

    $T_sec=0;/* <= رفع خطاي زمان سرور ، با اعداد '+' و '-' بر حسب ثانيه */
    if($time_zone!='local')date_default_timezone_set(( $time_zone==='')?'Asia/Tehran':$time_zone);
    $ts=$T_sec+(($timestamp==='')?time():tr_num($times tamp));
    $date=explode('_',date('H_i_j_n_O_P_s_w_Y',$ts));
    list($j_y,$j_m,$j_d)=gregorian_to_jalali($date[8],$date[3],$date[2]);
    $doy=($j_m<7)?(($j_m-1)*31)+$j_d-1:(($j_m-7)*30)+$j_d+185;
    $kab=(((($j_y%33)%4)-1)==((int)(($j_y%33)*0.05)))?1:0;
    $sl=strlen($format);
    $out='';
    for($i=0; $i<$sl; $i++){
    $sub=substr($format,$i,1);
    if($sub=='\\'){
    $out.=substr($format,++$i,1);
    continue;
    }
    switch($sub){

    case'E':case'R':case'x':case'X':
    $out.='http://jdf.scr.ir';
    break;

    case'B':case'e':case'g':
    case'G':case'h':case'I':
    case'T':case'u':case'Z':
    $out.=date($sub,$ts);
    break;

    case'a':
    $out.=($date[0]<12)?'ق.ظ':'ب.ظ';
    break;

    case'A':
    $out.=($date[0]<12)?'قبل از ظهر':'بعد از ظهر';
    break;

    case'b':
    $out.=(int)($j_m/3.1)+1;
    break;

    case'c':
    $out.=$j_y.'/'.$j_m.'/'.$j_d.' ،'.$date[0].':'.$date[1].':'.$date[6].' '.$date[5];
    break;

    case'C':
    $out.=(int)(($j_y+99)/100);
    break;

    case'd':
    $out.=($j_d<10)?'0'.$j_d:$j_d;
    break;

    case'D':
    $out.=jdate_words(array('kh'=>$date[7]),' ');
    break;

    case'f':
    $out.=jdate_words(array('ff'=>$j_m),' ');
    break;

    case'F':
    $out.=jdate_words(array('mm'=>$j_m),' ');
    break;

    case'H':
    $out.=$date[0];
    break;

    case'i':
    $out.=$date[1];
    break;

    case'j':
    $out.=$j_d;
    break;

    case'J':
    $out.=jdate_words(array('rr'=>$j_d),' ');
    break;

    case'k';
    $out.=tr_num(100-(int)($doy/($kab+365)*1000)/10,$tr_num);
    break;

    case'K':
    $out.=tr_num((int)($doy/($kab+365)*1000)/10,$tr_num);
    break;

    case'l':
    $out.=jdate_words(array('rh'=>$date[7]),' ');
    break;

    case'L':
    $out.=$kab;
    break;

    case'm':
    $out.=($j_m>9)?$j_m:'0'.$j_m;
    break;

    case'M':
    $out.=jdate_words(array('km'=>$j_m),' ');
    break;

    case'n':
    $out.=$j_m;
    break;

    case'N':
    $out.=$date[7]+1;
    break;

    case'o':
    $jdw=($date[7]==6)?0:$date[7]+1;
    $dny=364+$kab-$doy;
    $out.=($jdw>($doy+3) and $doy<3)?$j_y-1:(((3-$dny)>$jdw and $dny<3)?$j_y+1:$j_y);
    break;

    case'O':
    $out.=$date[4];
    break;

    case'p':
    $out.=jdate_words(array('mb'=>$j_m),' ');
    break;

    case'P':
    $out.=$date[5];
    break;

    case'q':
    $out.=jdate_words(array('sh'=>$j_y),' ');
    break;

    case'Q':
    $out.=$kab+364-$doy;
    break;

    case'r':
    $key=jdate_words(array('rh'=>$date[7],'mm'=>$j_m));
    $out.=$date[0].':'.$date[1].':'.$date[6].' '.$date[4].' '.$key['rh'].'، '.$j_d.' '.$key['mm'].' '.$j_y;
    break;

    case's':
    $out.=$date[6];
    break;

    case'S':
    $out.='ام';
    break;

    case't':
    $out.=($j_m!=12)?(31-(int)($j_m/6.5)):($kab+29);
    break;

    case'U':
    $out.=$ts;
    break;

    case'v':
    $out.=jdate_words(array('ss'=>($j_y%100)),' ');
    break;

    case'V':
    $out.=jdate_words(array('ss'=>$j_y),' ');
    break;

    case'w':
    $out.=($date[7]==6)?0:$date[7]+1;
    break;

    case'W':
    $avs=(($date[7]==6)?0:$date[7]+1)-($doy%7);
    if($avs<0)$avs+=7;
    $num=(int)(($doy+$avs)/7);
    if($avs<4){
    $num++;
    }elseif($num<1){
    $num=($avs==4 or $avs==((((($j_y%33)%4)-2)==((int)(($j_y%33)*0.05)))?5:4))?53:52;
    }
    $aks=$avs+$kab;
    if($aks==7)$aks=0;
    $out.=(($kab+363-$doy)<$aks and $aks<3)?'01':(($num<10)?'0'.$num:$num);
    break;

    case'y':
    $out.=substr($j_y,2,2);
    break;

    case'Y':
    $out.=$j_y;
    break;

    case'z':
    $out.=$doy;
    break;

    default:$out.=$sub;
    }
    }
    return($tr_num!='en')?tr_num($out,'fa','.'):$out;
    }

    /* F */
    public function jstrftime($format,$timestamp='',$none='',$time_zon e='Asia/Tehran',$tr_num='fa'){

    $T_sec=0;/* <= رفع خطاي زمان سرور ، با اعداد '+' و '-' بر حسب ثانيه */
    if($time_zone!='local')date_default_timezone_set(( $time_zone==='')?'Asia/Tehran':$time_zone);
    $ts=$T_sec+(($timestamp==='')?time():tr_num($times tamp));
    $date=explode('_',date('h_H_i_j_n_s_w_Y',$ts));
    list($j_y,$j_m,$j_d)=gregorian_to_jalali($date[7],$date[4],$date[3]);
    $doy=($j_m<7)?(($j_m-1)*31)+$j_d-1:(($j_m-7)*30)+$j_d+185;
    $kab=(((($j_y%33)%4)-1)==((int)(($j_y%33)*0.05)))?1:0;
    $sl=strlen($format);
    $out='';
    for($i=0; $i<$sl; $i++){
    $sub=substr($format,$i,1);
    if($sub=='%'){
    $sub=substr($format,++$i,1);
    }else{
    $out.=$sub;
    continue;
    }
    switch($sub){

    /* Day */
    case'a':
    $out.=jdate_words(array('kh'=>$date[6]),' ');
    break;

    case'A':
    $out.=jdate_words(array('rh'=>$date[6]),' ');
    break;

    case'd':
    $out.=($j_d<10)?'0'.$j_d:$j_d;
    break;

    case'e':
    $out.=($j_d<10)?' '.$j_d:$j_d;
    break;

    case'j':
    $out.=str_pad($doy+1,3,0,STR_PAD_LEFT);
    break;

    case'u':
    $out.=$date[6]+1;
    break;

    case'w':
    $out.=($date[6]==6)?0:$date[6]+1;
    break;

    /* Week */
    case'U':
    $avs=(($date[6]<5)?$date[6]+2:$date[6]-5)-($doy%7);
    if($avs<0)$avs+=7;
    $num=(int)(($doy+$avs)/7)+1;
    if($avs>3 or $avs==1)$num--;
    $out.=($num<10)?'0'.$num:$num;
    break;

    case'V':
    $avs=(($date[6]==6)?0:$date[6]+1)-($doy%7);
    if($avs<0)$avs+=7;
    $num=(int)(($doy+$avs)/7);
    if($avs<4){
    $num++;
    }elseif($num<1){
    $num=($avs==4 or $avs==((((($j_y%33)%4)-2)==((int)(($j_y%33)*0.05)))?5:4))?53:52;
    }
    $aks=$avs+$kab;
    if($aks==7)$aks=0;
    $out.=(($kab+363-$doy)<$aks and $aks<3)?'01':(($num<10)?'0'.$num:$num);
    break;

    case'W':
    $avs=(($date[6]==6)?0:$date[6]+1)-($doy%7);
    if($avs<0)$avs+=7;
    $num=(int)(($doy+$avs)/7)+1;
    if($avs>3)$num--;
    $out.=($num<10)?'0'.$num:$num;
    break;

    /* Month */
    case'b':
    case'h':
    $out.=jdate_words(array('km'=>$j_m),' ');
    break;

    case'B':
    $out.=jdate_words(array('mm'=>$j_m),' ');
    break;

    case'm':
    $out.=($j_m>9)?$j_m:'0'.$j_m;
    break;

    /* Year */
    case'C':
    $tmp=(int)($j_y/100);
    $out.=($tmp>9)?$tmp:'0'.$tmp;
    break;

    case'g':
    $jdw=($date[6]==6)?0:$date[6]+1;
    $dny=364+$kab-$doy;
    $out.=substr(($jdw>($doy+3) and $doy<3)?$j_y-1:(((3-$dny)>$jdw and $dny<3)?$j_y+1:$j_y),2,2);
    break;

    case'G':
    $jdw=($date[6]==6)?0:$date[6]+1;
    $dny=364+$kab-$doy;
    $out.=($jdw>($doy+3) and $doy<3)?$j_y-1:(((3-$dny)>$jdw and $dny<3)?$j_y+1:$j_y);
    break;

    case'y':
    $out.=substr($j_y,2,2);
    break;

    case'Y':
    $out.=$j_y;
    break;

    /* Time */
    case'H':
    $out.=$date[1];
    break;

    case'I':
    $out.=$date[0];
    break;

    case'l':
    $out.=($date[0]>9)?$date[0]:' '.(int)$date[0];
    break;

    case'M':
    $out.=$date[2];
    break;

    case'p':
    $out.=($date[1]<12)?'قبل از ظهر':'بعد از ظهر';
    break;

    case'P':
    $out.=($date[1]<12)?'ق.ظ':'ب.ظ';
    break;

    case'r':
    $out.=$date[0].':'.$date[2].':'.$date[5].' '.(($date[1]<12)?'قبل از ظهر':'بعد از ظهر');
    break;

    case'R':
    $out.=$date[1].':'.$date[2];
    break;

    case'S':
    $out.=$date[5];
    break;

    case'T':
    $out.=$date[1].':'.$date[2].':'.$date[5];
    break;

    case'X':
    $out.=$date[0].':'.$date[2].':'.$date[5];
    break;

    case'z':
    $out.=date('O',$ts);
    break;

    case'Z':
    $out.=date('T',$ts);
    break;

    /* Time and Date Stamps */
    case'c':
    $key=jdate_words(array('rh'=>$date[6],'mm'=>$j_m));
    $out.=$date[1].':'.$date[2].':'.$date[5].' '.date('P',$ts).' '.$key['rh'].'، '.$j_d.' '.$key['mm'].' '.$j_y;
    break;

    case'D':
    $out.=substr($j_y,2,2).'/'.(($j_m>9)?$j_m:'0'.$j_m).'/'.(($j_d<10)?'0'.$j_d:$j_d);
    break;

    case'F':
    $out.=$j_y.'-'.(($j_m>9)?$j_m:'0'.$j_m).'-'.(($j_d<10)?'0'.$j_d:$j_d);
    break;

    case's':
    $out.=$ts;
    break;

    case'x':
    $out.=substr($j_y,2,2).'/'.(($j_m>9)?$j_m:'0'.$j_m).'/'.(($j_d<10)?'0'.$j_d:$j_d);
    break;

    /* Miscellaneous */
    case'n':
    $out.="\n";
    break;

    case't':
    $out.="\t";
    break;

    case'%':
    $out.='%';
    break;

    default:$out.=$sub;
    }
    }
    return($tr_num!='en')?tr_num($out,'fa','.'):$out;
    }

    /* F */
    public function jmktime($h='',$m='',$s='',$jm='',$jd='',$jy='',$no ne='',$timezone='Asia/Tehran'){
    if($timezone!='local')date_default_timezone_set($t imezone);
    if($h===''){
    return time();
    }else{
    list($h,$m,$s,$jm,$jd,$jy)=explode('_',tr_num($h.' _'.$m.'_'.$s.'_'.$jm.'_'.$jd.'_'.$jy));
    if($m===''){
    return mktime($h);
    }else{
    if($s===''){
    return mktime($h,$m);
    }else{
    if($jm===''){
    return mktime($h,$m,$s);
    }else{
    $jdate=explode('_',jdate('Y_j','','',$timezone,'en '));
    if($jd===''){
    list($gy,$gm,$gd)=jalali_to_gregorian($jdate[0],$jm,$jdate[1]);
    return mktime($h,$m,$s,$gm);
    }else{
    if($jy===''){
    list($gy,$gm,$gd)=jalali_to_gregorian($jdate[0],$jm,$jd);
    return mktime($h,$m,$s,$gm,$gd);
    }else{
    list($gy,$gm,$gd)=jalali_to_gregorian($jy,$jm,$jd) ;
    return mktime($h,$m,$s,$gm,$gd,$gy);
    }
    }
    }
    }
    }
    }
    }

    /* F */
    public function jgetdate($timestamp='',$none='',$timezone='Asia/Tehran',$tn='en'){
    $ts=($timestamp==='')?time():tr_num($timestamp);
    $jdate=explode('_',jdate('F_G_i_j_l_n_s_w_Y_z',$ts ,'',$timezone,$tn));
    return array(
    'seconds'=>tr_num((int)tr_num($jdate[6]),$tn),
    'minutes'=>tr_num((int)tr_num($jdate[2]),$tn),
    'hours'=>$jdate[1],
    'mday'=>$jdate[3],
    'wday'=>$jdate[7],
    'mon'=>$jdate[5],
    'year'=>$jdate[8],
    'yday'=>$jdate[9],
    'weekday'=>$jdate[4],
    'month'=>$jdate[0],
    0=>tr_num($ts,$tn)
    );
    }

    /* F */
    public function jcheckdate($jm,$jd,$jy){
    list($jm,$jd,$jy)=explode('_',tr_num($jm.'_'.$jd.' _'.$jy));
    $l_d=($jm==12)?((((($jy%33)%4)-1)==((int)(($jy%33)*0.05)))?30:29):31-(int)($jm/6.5);
    return($jm>12 or $jd>$l_d or $jm<1 or $jd<1 or $jy<1)?false:true;
    }

    /* F */
    public function tr_num($str,$mod='en',$mf='٫'){
    $num_a=array('0','1','2','3','4','5','6','7','8',' 9','.');
    $key_a=array('۰','۱','۲','۳','۴','۵','۶',' ','۸','۹',$mf);
    return($mod=='fa')?str_replace($num_a,$key_a,$str) :str_replace($key_a,$num_a,$str);
    }

    /* F */
    public function jdate_words($array,$mod=''){
    foreach($array as $type=>$num){
    $num=(int)tr_num($num);
    switch($type){

    case'ss':
    $sl=strlen($num);
    $xy3=substr($num,2-$sl,1);
    $h3=$h34=$h4='';
    if($xy3==1){
    $p34='';
    $k34=array('ده','یازده','دوازده','س زده','چهارده','پانزده','شانزد ه','هفده','هجده','نوزده');
    $h34=$k34[substr($num,2-$sl,2)-10];
    }else{
    $xy4=substr($num,3-$sl,1);
    $p34=($xy3==0 or $xy4==0)?'':' و ';
    $k3=array('','','بیست','سی','چهل','پنج اه','شصت','هفتاد','هشتاد','نود') ;
    $h3=$k3[$xy3];
    $k4=array('','یک','دو','سه','چهار','پن ج','شش','هفت','هشت','نه');
    $h4=$k4[$xy4];
    }
    $array[$type]=(($num>99)?str_replace(array('12','13','14','19', '20')
    ,array('هزار و دویست','هزار و سیصد','هزار و چهارصد','هزار و نهصد','دوهزار')
    ,substr($num,0,2)).((substr($num,2,2)=='00')?'':' و '):'').$h3.$p34.$h34.$h4;
    break;

    case'mm':
    $key=array('فروردین','اردیبهشت','خ رداد','تیر','مرداد','شهریور','م هر','آبان','آذر','دی','بهمن','اس ند');
    $array[$type]=$key[$num-1];
    break;

    case'rr':
    $key=array('یک','دو','سه','چهار','پنج ','شش','هفت','هشت','نه','ده','یازد ه','دوازده','سیزده'
    ,'چهارده','پانزده','شانزده','ه ده','هجده','نوزده','بیست','بیس و یک','بیست و دو','بیست و سه'
    ,'بیست و چهار','بیست و پنج','بیست و شش','بیست و هفت','بیست و هشت','بیست و نه','سی','سی و یک');
    $array[$type]=$key[$num-1];
    break;

    case'rh':
    $key=array('یکشنبه','دوشنبه','سه شنبه','چهارشنبه','پنجشنبه','ج عه','شنبه');
    $array[$type]=$key[$num];
    break;

    case'sh':
    $key=array('مار','اسب','گوسفند','می ون','مرغ','سگ','خوک','موش','گاو', 'پلنگ','خرگوش','نهنگ');
    $array[$type]=$key[$num%12];
    break;

    case'mb':
    $key=array('حمل','ثور','جوزا','سرطا ','اسد','سنبله','میزان','عقرب',' قوس','جدی','دلو','حوت');
    $array[$type]=$key[$num-1];
    break;

    case'ff':
    $key=array('بهار','تابستان','پاییز ','زمستان');
    $array[$type]=$key[(int)($num/3.1)];
    break;

    case'km':
    $key=array('فر','ار','خر','تی‍','مر',' شه‍','مه‍','آب‍','آذ','دی','به ','اس‍');
    $array[$type]=$key[$num-1];
    break;

    case'kh':
    $key=array('ی','د','س','چ','پ','ج','ش');
    $array[$type]=$key[$num];
    break;

    default:$array[$type]=$num;
    }
    }
    return($mod==='')?$array:implode($mod,$array);
    }


    public function gregorian_to_jalali($gy,$gm,$gd,$mod=''){
    list($gy,$gm,$gd)=explode('_',tr_num($gy.'_'.$gm.' _'.$gd));/* <= Extra :اين سطر ، جزء تابع اصلي نيست */
    $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;
    $jy+=(int)(($days-1)/365);
    if($days > 365)$days=($days-1)%365;
    if($days < 186){
    $jm=1+(int)($days/31);
    $jd=1+($days%31);
    }else{
    $jm=7+(int)(($days-186)/30);
    $jd=1+(($days-186)%30);
    }
    return($mod==='')?array($jy,$jm,$jd):$jy .$mod .$jm .$mod .$jd;
    }

    /* F */
    public function jalali_to_gregorian($jy,$jm,$jd,$mod=''){
    list($jy,$jm,$jd)=explode('_',tr_num($jy.'_'.$jm.' _'.$jd));/* <= Extra :اين سطر ، جزء تابع اصلي نيست */
    if($jy > 979){
    $gy=1600;
    $jy-=979;
    }else{
    $gy=621;
    }
    $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($gy,$gm,$gd):$gy .$mod .$gm .$mod .$gd;
    }


    }


    باز هم اررور



    $jdf=new Jdf();
    $today= $jdf->jdate('Y').'-'.$jdf->jdate('n').'-'.$jdf->jdate('j');
    echo $today;


    error.jpg


    $time_zone هم در فایل درسته اینجا فاصله داره

    $time_zone

  4. #4
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: کلاس Jdf در لاراول

    مشخصا داره از خط 17 اررور میگیره میگه تابع gregorian_to_jalali وجود نداره

            list($j_y,$j_m,$j_d)=gregorian_to_jalali($date[8],$date[3],$date[2]);


    اگه همه توابع رو برداه باشی توی کلاس ... یعنی تابع gregorian_to_jalali هم توی کلاس باشه طبیعتا شما نمیتونی اینجوری صداش بزن
    باید اینجوری صداش بزنی


        list($j_y,$j_m,$j_d)= $this->gregorian_to_jalali($date[8],$date[3],$date[2]);

  5. #5

    نقل قول: کلاس Jdf در لاراول

    اون تغییراتی که گفتید متوجه شدم

    ولی باز خورد به یک مشکل دیگه

    یک سری تغییرات دادم


    <?php


    namespace App\lib;


    class Jdf
    {

    public function jdate($format,$timestamp='',$none='',$time_zone='A sia/Tehran',$tr_num='fa'){

    $T_sec=0;/* <= رفع خطاي زمان سرور ، با اعداد '+' و '-' بر حسب ثانيه */

    if($time_zone!='local')date_default_timezone_set(( $time_zone==='')?'Asia/Tehran':$time_zone);
    $ts=$T_sec+(($timestamp==='')?time():$this->tr_num($timestamp));
    $date=explode('_',date('H_i_j_n_O_P_s_w_Y',$ts));
    list($j_y,$j_m,$j_d)=$this->gregorian_to_jalali($date[8],$date[3],$date[2]);
    $doy=($j_m<7)?(($j_m-1)*31)+$j_d-1:(($j_m-7)*30)+$j_d+185;
    $kab=(((($j_y%33)%4)-1)==((int)(($j_y%33)*0.05)))?1:0;
    $sl=strlen($format);
    $out='';
    for($i=0; $i<$sl; $i++){
    $sub=substr($format,$i,1);
    if($sub=='\\'){
    $out.=substr($format,++$i,1);
    continue;
    }
    switch($sub){

    case'E':case'R':case'x':case'X':
    $out.='http://jdf.scr.ir';
    break;

    case'B':case'e':case'g':
    case'G':case'h':case'I':
    case'T':case'u':case'Z':
    $out.=date($sub,$ts);
    break;

    case'a':
    $out.=($date[0]<12)?'ق.ظ':'ب.ظ';
    break;

    case'A':
    $out.=($date[0]<12)?'قبل از ظهر':'بعد از ظهر';
    break;

    case'b':
    $out.=(int)($j_m/3.1)+1;
    break;

    case'c':
    $out.=$j_y.'/'.$j_m.'/'.$j_d.' ،'.$date[0].':'.$date[1].':'.$date[6].' '.$date[5];
    break;

    case'C':
    $out.=(int)(($j_y+99)/100);
    break;

    case'd':
    $out.=($j_d<10)?'0'.$j_d:$j_d;
    break;

    case'D':
    $out.=$this->jdate_words(array('kh'=>$date[7]),' ');
    break;

    case'f':
    $out.=$this->jdate_words(array('ff'=>$j_m),' ');
    break;

    case'F':
    $out.=$this->jdate_words(array('mm'=>$j_m),' ');
    break;

    case'H':
    $out.=$date[0];
    break;

    case'i':
    $out.=$date[1];
    break;

    case'j':
    $out.=$j_d;
    break;

    case'J':
    $out.=$this->jdate_words(array('rr'=>$j_d),' ');
    break;

    case'k';
    $out.=$this->tr_num(100-(int)($doy/($kab+365)*1000)/10,$tr_num);
    break;

    case'K':
    $out.=$this->tr_num((int)($doy/($kab+365)*1000)/10,$tr_num);
    break;

    case'l':
    $out.=$this->jdate_words(array('rh'=>$date[7]),' ');
    break;

    case'L':
    $out.=$kab;
    break;

    case'm':
    $out.=($j_m>9)?$j_m:'0'.$j_m;
    break;

    case'M':
    $out.=$this->jdate_words(array('km'=>$j_m),' ');
    break;

    case'n':
    $out.=$j_m;
    break;

    case'N':
    $out.=$date[7]+1;
    break;

    case'o':
    $jdw=($date[7]==6)?0:$date[7]+1;
    $dny=364+$kab-$doy;
    $out.=($jdw>($doy+3) and $doy<3)?$j_y-1:(((3-$dny)>$jdw and $dny<3)?$j_y+1:$j_y);
    break;

    case'O':
    $out.=$date[4];
    break;

    case'p':
    $out.=$this->jdate_words(array('mb'=>$j_m),' ');
    break;

    case'P':
    $out.=$date[5];
    break;

    case'q':
    $out.=$this->jdate_words(array('sh'=>$j_y),' ');
    break;

    case'Q':
    $out.=$kab+364-$doy;
    break;

    case'r':
    $key=$this->jdate_words(array('rh'=>$date[7],'mm'=>$j_m));
    $out.=$date[0].':'.$date[1].':'.$date[6].' '.$date[4].' '.$key['rh'].'، '.$j_d.' '.$key['mm'].' '.$j_y;
    break;

    case's':
    $out.=$date[6];
    break;

    case'S':
    $out.='ام';
    break;

    case't':
    $out.=($j_m!=12)?(31-(int)($j_m/6.5)):($kab+29);
    break;

    case'U':
    $out.=$ts;
    break;

    case'v':
    $out.=$this->jdate_words(array('ss'=>($j_y%100)),' ');
    break;

    case'V':
    $out.=$this->jdate_words(array('ss'=>$j_y),' ');
    break;

    case'w':
    $out.=($date[7]==6)?0:$date[7]+1;
    break;

    case'W':
    $avs=(($date[7]==6)?0:$date[7]+1)-($doy%7);
    if($avs<0)$avs+=7;
    $num=(int)(($doy+$avs)/7);
    if($avs<4){
    $num++;
    }elseif($num<1){
    $num=($avs==4 or $avs==((((($j_y%33)%4)-2)==((int)(($j_y%33)*0.05)))?5:4))?53:52;
    }
    $aks=$avs+$kab;
    if($aks==7)$aks=0;
    $out.=(($kab+363-$doy)<$aks and $aks<3)?'01':(($num<10)?'0'.$num:$num);
    break;

    case'y':
    $out.=substr($j_y,2,2);
    break;

    case'Y':
    $out.=$j_y;
    break;

    case'z':
    $out.=$doy;
    break;

    default:$out.=$sub;
    }
    }
    return($tr_num!='en')?$this->tr_num($out,'fa','.'):$out;
    }

    public function tr_num($str,$mod='en',$mf='٫'){
    $num_a=array('0','1','2','3','4','5','6','7','8',' 9','.');
    $key_a=array('۰','۱','۲','۳','۴','۵','۶',' ','۸','۹',$mf);
    return($mod=='fa')?str_replace($num_a,$key_a,$str) :str_replace($key_a,$num_a,$str);
    }

    public function jdate_words($array,$mod=''){
    foreach($array as $type=>$num){
    $num=(int)$this->tr_num($num);
    switch($type){

    case'ss':
    $sl=strlen($num);
    $xy3=substr($num,2-$sl,1);
    $h3=$h34=$h4='';
    if($xy3==1){
    $p34='';
    $k34=array('ده','یازده','دوازده','س زده','چهارده','پانزده','شانزد ه','هفده','هجده','نوزده');
    $h34=$k34[substr($num,2-$sl,2)-10];
    }else{
    $xy4=substr($num,3-$sl,1);
    $p34=($xy3==0 or $xy4==0)?'':' و ';
    $k3=array('','','بیست','سی','چهل','پنج اه','شصت','هفتاد','هشتاد','نود') ;
    $h3=$k3[$xy3];
    $k4=array('','یک','دو','سه','چهار','پن ج','شش','هفت','هشت','نه');
    $h4=$k4[$xy4];
    }
    $array[$type]=(($num>99)?str_replace(array('12','13','14','19', '20')
    ,array('هزار و دویست','هزار و سیصد','هزار و چهارصد','هزار و نهصد','دوهزار')
    ,substr($num,0,2)).((substr($num,2,2)=='00')?'':' و '):'').$h3.$p34.$h34.$h4;
    break;

    case'mm':
    $key=array('فروردین','اردیبهشت','خ رداد','تیر','مرداد','شهریور','م هر','آبان','آذر','دی','بهمن','اس ند');
    $array[$type]=$key[$num-1];
    break;

    case'rr':
    $key=array('یک','دو','سه','چهار','پنج ','شش','هفت','هشت','نه','ده','یازد ه','دوازده','سیزده'
    ,'چهارده','پانزده','شانزده','ه ده','هجده','نوزده','بیست','بیس و یک','بیست و دو','بیست و سه'
    ,'بیست و چهار','بیست و پنج','بیست و شش','بیست و هفت','بیست و هشت','بیست و نه','سی','سی و یک');
    $array[$type]=$key[$num-1];
    break;

    case'rh':
    $key=array('یکشنبه','دوشنبه','سه شنبه','چهارشنبه','پنجشنبه','ج عه','شنبه');
    $array[$type]=$key[$num];
    break;

    case'sh':
    $key=array('مار','اسب','گوسفند','می ون','مرغ','سگ','خوک','موش','گاو', 'پلنگ','خرگوش','نهنگ');
    $array[$type]=$key[$num%12];
    break;

    case'mb':
    $key=array('حمل','ثور','جوزا','سرطا ','اسد','سنبله','میزان','عقرب',' قوس','جدی','دلو','حوت');
    $array[$type]=$key[$num-1];
    break;

    case'ff':
    $key=array('بهار','تابستان','پاییز ','زمستان');
    $array[$type]=$key[(int)($num/3.1)];
    break;

    case'km':
    $key=array('فر','ار','خر','تی‍','مر',' شه‍','مه‍','آب‍','آذ','دی','به ','اس‍');
    $array[$type]=$key[$num-1];
    break;

    case'kh':
    $key=array('ی','د','س','چ','پ','ج','ش');
    $array[$type]=$key[$num];
    break;

    default:$array[$type]=$num;
    }
    }
    return($mod==='')?$array:implode($mod,$array);
    }
    public function gregorian_to_jalali($gy,$gm,$gd,$mod=''){
    list($gy,$gm,$gd)=explode('_',$this->tr_num($gy.'_'.$gm.'_'.$gd));/* <= Extra :اين سطر ، جزء تابع اصلي نيست */
    $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;
    $jy+=(int)(($days-1)/365);
    if($days > 365)$days=($days-1)%365;
    if($days < 186){
    $jm=1+(int)($days/31);
    $jd=1+($days%31);
    }else{
    $jm=7+(int)(($days-186)/30);
    $jd=1+(($days-186)%30);
    }
    return($mod==='')?array($jy,$jm,$jd):$jy .$mod .$jm .$mod .$jd;
    }



    }


    حالا این اررور میده

    error.jpg

  6. #6
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: کلاس Jdf در لاراول

    این اررور برا وقتیه که تاریخی که بهش دادی تبدیل کنه فرمت درست نداره ...مشکل از خود کلاس نیست احتمالا
    با چه تاریخی و چجوری داری استفاده میکنی ازش ؟

  7. #7

    نقل قول: کلاس Jdf در لاراول

    دیتابیش mongodb هست و به صورت time ذخیره میشه

     1572946290


    به صورت کد بالا ذخیره میشه

  8. #8
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: کلاس Jdf در لاراول

    اررور میگه چیزی که بهش دادی تبدیل کنه عدد نیست
    چک کن حتما عدد باشه قبل از اینکه بدی تبدیل کنه یه dump بزن ببین چیه توش

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •