Jamroom Logo Jamroom 5 Core
is now Open Source!
User Support Forum Archive (Read Only)
Jamroom Developers:
change type of date
rfnbnkr



Joined: 19 Apr 2011
Posts: 15

Posted: 06/19/11 06:25 
hi every body,
I wana change my type of jamroom date from Gregorian to Jalali.
I have a function for that , and I don't know how to use it.
that function is:


Code

<?php
function jdate($type,$maket="now")
{
   //set 1 if you want translate number to farsi or if you don't like set 0
   $transnumber=1;
   ///chosse your timezone
   $TZhours=0;
   $TZminute=0;

   if($maket=="now"){
      $year=date("Y");
      $month=date("m");
      $day=date("d");
      list( $jyear, $jmonth, $jday ) = gregorian_to_jalali($year, $month, $day);
      $maket=jmaketime(date("h")+$TZhours,date("i")+$TZminute,date("s"),$jmonth,$jday,$jyear);
   }else{
      $maket+=$TZhours*3600+$TZminute*60;
      $date=date("Y-m-d",maket);
      list( $year, $month, $day ) = preg_split ( '/-/', $date );

      list( $jyear, $jmonth, $jday ) = gregorian_to_jalali($year, $month, $day);
      }

   $need= $maket;
   $year=date("Y",$need);
   $month=date("m",$need);
   $day=date("d",$need);
   $i=0;
   while($i<strlen($type))
   {
      $subtype=substr($type,$i,1);
      switch ($subtype)
      {

         case "A":
            $result1=date("a",$need);
            if($result1=="pm") $result.= "بعدازظهر";
            else $result.="قبل‏ازظهر";
            break;

         case "a":
            $result1=date("a",$need);
            if($result1=="pm") $result.= "ب.ظ";
            else $result.="ق.ظ";
            break;
         case "d":
            list( $jyear, $jmonth, $jday ) = gregorian_to_jalali($year, $month, $day);
            if($jday<10)$result1="0".$jday;
            else    $result1=$jday;
            if($transnumber==1) $result.=Convertnumber2farsi($result1);
            else $result.=$result1;
            break;
         case "D":
            $result1=date("D",$need);
            if($result1=="Thu") $result1="پ";
            else if($result1=="Sat") $result1="ش";
            else if($result1=="Sun") $result1="ى";
            else if($result1=="Mon") $result1="د";
            else if($result1=="Tue") $result1="س";
            else if($result1=="Wed") $result1="چ";
            else if($result1=="Thu") $result1="پ";
            else if($result1=="Fri") $result1="ج";
            $result.=$result1;
            break;
         case"F":
            list( $jyear, $jmonth, $jday ) = gregorian_to_jalali($year, $month, $day);
            $result.=monthname($jmonth);
            break;
         case "g":
            $result1=date("g",$need);
            if($transnumber==1) $result.=Convertnumber2farsi($result1);
            else $result.=$result1;
            break;
         case "G":
            $result1=date("G",$need);
            if($transnumber==1) $result.=Convertnumber2farsi($result1);
            else $result.=$result1;
            break;
            case "h":
            $result1=date("h",$need);
            if($transnumber==1) $result.=Convertnumber2farsi($result1);
            else $result.=$result1;
            break;
         case "H":
            $result1=date("H",$need);
            if($transnumber==1) $result.=Convertnumber2farsi($result1);
            else $result.=$result1;
            break;
         case "i":
            $result1=date("i",$need);
            if($transnumber==1) $result.=Convertnumber2farsi($result1);
            else $result.=$result1;
            break;
         case "j":
            list( $jyear, $jmonth, $jday ) = gregorian_to_jalali($year, $month, $day);
            $result1=$jday;
            if($transnumber==1) $result.=Convertnumber2farsi($result1);
            else $result.=$result1;
            break;
         case "l":
            $result1=date("l",$need);
            if($result1=="Saturday") $result1="شنبه";
            else if($result1=="Sunday") $result1="يكشنبه";
            else if($result1=="Monday") $result1="دوشنبه";
            else if($result1=="Tuesday") $result1="سه شنبه";
            else if($result1=="Wednesday") $result1="چهارشنبه";
            else if($result1=="Thursday") $result1="پنجشنبه";
            else if($result1=="Friday") $result1="جمعه";
            $result.=$result1;
            break;
         case "m":
            list( $jyear, $jmonth, $jday ) = gregorian_to_jalali($year, $month, $day);
            if($jmonth<10) $result1="0".$jmonth;
            else   $result1=$jmonth;
            if($transnumber==1) $result.=Convertnumber2farsi($result1);
            else $result.=$result1;
            break;
         case "M":
            list( $jyear, $jmonth, $jday ) = gregorian_to_jalali($year, $month, $day);
            $result.=monthname($jmonth);
            break;
         case "n":
            list( $jyear, $jmonth, $jday ) = gregorian_to_jalali($year, $month, $day);   
            $result1=$jmonth;
            if($transnumber==1) $result.=Convertnumber2farsi($result1);
            else $result.=$result1;
            break;
         case "s":
            $result1=date("s",$need);
            if($transnumber==1) $result.=Convertnumber2farsi($result1);
            else $result.=$result1;
            break;
         case "S":
            $result.="ام";
            break;
         case "t":
            $result.=lastday ($month,$day,$year);
            break;
         case "w":
            $result1=date("w",$need);
            if($transnumber==1) $result.=Convertnumber2farsi($result1);
            else $result.=$result1;
            break;
         case "y":
            list( $jyear, $jmonth, $jday ) = gregorian_to_jalali($year, $month, $day);   
            $result1=substr($jyear,2,4);
            if($transnumber==1) $result.=Convertnumber2farsi($result1);
            else $result.=$result1;
            break;
         case "Y":
            list( $jyear, $jmonth, $jday ) = gregorian_to_jalali($year, $month, $day);
            $result1=$jyear;
            if($transnumber==1) $result.=Convertnumber2farsi($result1);
            else $result.=$result1;
            break;      
         default:
            $result.=$subtype;
      }
   $i++;
   }
   return $result;
}

function div($a,$b) {
    return (int) ($a / $b);
}

function gregorian_to_jalali ($g_y, $g_m, $g_d)
{
    $g_days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    $j_days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);     
   


   

   $gy = $g_y-1600;
   $gm = $g_m-1;
   $gd = $g_d-1;

   $g_day_no = 365*$gy+div($gy+3,4)-div($gy+99,100)+div($gy+399,400);

   for ($i=0; $i < $gm; ++$i)
      $g_day_no += $g_days_in_month[$i];
   if ($gm>1 && (($gy%4==0 && $gy%100!=0) || ($gy%400==0)))
      /* leap and after Feb */
      $g_day_no++;
   $g_day_no += $gd;

   $j_day_no = $g_day_no-79;

   $j_np = div($j_day_no, 12053); /* 12053 = 365*33 + 32/4 */
   $j_day_no = $j_day_no % 12053;

   $jy = 979+33*$j_np+4*div($j_day_no,1461); /* 1461 = 365*4 + 4/4 */

   $j_day_no %= 1461;

   if ($j_day_no >= 366) {
      $jy += div($j_day_no-1, 365);
      $j_day_no = ($j_day_no-1)%365;
   }

   for ($i = 0; $i < 11 && $j_day_no >= $j_days_in_month[$i]; ++$i)
      $j_day_no -= $j_days_in_month[$i];
   $jm = $i+1;
   $jd = $j_day_no+1;

   return array($jy, $jm, $jd);
}


Please tell me that where can I use that to change date to Jalali.
Thanx

Back to top
elixir



Joined: 28 Jun 2008
Posts: 599

Posted: 06/20/11 08:38 
i think you can make your custom smarty modifier. I have done this before to extract video id from the youtube url. I don't remember how i did it but i started with simple google search and looked at an example of built in Jamroom smarty modifier.

Back to top
Display posts from previous:   
User Support Forum Archive (Read Only)
Jamroom Developers

 
Solutions
• Social Media Platform
• Social Networking Software
• Musician Website Manager
• Community Builder
Products
• Jamroom Core
• Jamroom Addons
• Jamroom Modules
• Jamroom Marketplace
Support
• Support Forum
• Documentation
• Support Center
• Contact Support
Community
• Community Forum
• Member Sites
• Developers
Company
• About Us
• Contact Us
• Privacy Policy
©2003 - 2010 Talldude Networks, LLC.