[ Index ]
 

Code source de LifeType 1.2.4

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/class/data/ -> jalalicalendar.class.php (source)

   1  <?php
   2  // lang file must be at the same directory

   3  lt_include( PLOG_CLASS_PATH."class/data/jalalicalendarstrings.properties.php" );
   4  
   5  /**

   6   * \ingroup data

   7   *

   8   * Jalali Date function by Milad Rastian (miladmovie AT yahoo DOT com)

   9   * 

  10   * The main function which convert Gregorian to Jalali calendars is:

  11   * Copyright (C) 2000  Roozbeh Pournader and Mohammad Toossi

  12   * you can see complete note of those function in down of the page

  13   *

  14   *        AND JALAI DATE FUNCTION

  15   * this function is simillar than date function in PHP

  16   * you can find more about it in http://jdf.farsiprojects.com

  17   *        Copyright (C)2003 FARSI PROJECTS GROUP

  18   */
  19  class JalaliCalendar
  20  {
  21  
  22  	function jdate($type,$maket="now")
  23      {
  24          $result="";
  25          if($maket=="now"){
  26              $year=date("Y");
  27              $month=date("m");
  28              $day=date("d");
  29              list( $jyear, $jmonth, $jday ) = JalaliCalendar::gregorian_to_jalali($year, $month, $day);
  30              $maket=JalaliCalendar::jmaketime(date("h")+_JDF_TZhours,date("i")+_JDF_TZminute,date("s"),$jmonth,$jday,$jyear);
  31          }else{
  32              $maket+=_JDF_TZhours*3600+_JDF_TZminute*60;
  33              $date=date("Y-m-d",$maket);
  34              list( $year, $month, $day ) = preg_split ( '/-/', $date );
  35      
  36              list( $jyear, $jmonth, $jday ) = JalaliCalendar::gregorian_to_jalali($year, $month, $day);
  37              }
  38      
  39          $need= $maket;
  40          $year=date("Y",$need);
  41          $month=date("m",$need);
  42          $day=date("d",$need);
  43          $i=0;
  44          while($i<strlen($type))
  45          {
  46              $subtype=substr($type,$i,1);
  47              switch ($subtype)
  48              {
  49      
  50                  case "A":
  51                      $result1=date("a",$need);
  52                      if($result1=="pm") $result.=_JDF_PM_LONG;
  53                      else $result.=_JDF_AM_LONG;
  54                      break;
  55      
  56                  case "a":
  57                      $result1=date("a",$need);
  58                      if($result1=="pm") $result.=_JDF_PM_SHORT;
  59                      else $result.=_JDF_AM_SHORT;
  60                      break;
  61                  case "d":
  62                      list( $jyear, $jmonth, $jday ) = JalaliCalendar::gregorian_to_jalali($year, $month, $day);
  63                      if($jday<10)$result1="0".$jday;
  64                      else     $result1=$jday;
  65                      if(_JDF_USE_PERSIANNUM) $result.=JalaliCalendar::Convertnumber2farsi($result1);
  66                      else $result.=$result1;
  67                      break;
  68                  case "D":
  69                      $result1=date("D",$need);
  70                      if($result1=="Sat") $result1=_JDF_Sat_SHORT;
  71                      else if($result1=="Sun") $result1=_JDF_Sun_SHORT;
  72                      else if($result1=="Mon") $result1=_JDF_Mon_SHORT;
  73                      else if($result1=="Tue") $result1=_JDF_Tue_SHORT;
  74                      else if($result1=="Wed") $result1=_JDF_Wed_SHORT;
  75                      else if($result1=="Thu") $result1=_JDF_Thu_SHORT;
  76                                      else if($result1=="Fri") $result1=_JDF_Fri_SHORT;
  77                      $result.=$result1;
  78                      break;
  79                  case"F":
  80                      list( $jyear, $jmonth, $jday ) = JalaliCalendar::gregorian_to_jalali($year, $month, $day);
  81                      $result.=monthname($jmonth);
  82                      break;
  83                  case "g":
  84                      $result1=date("g",$need);
  85                      if(_JDF_USE_PERSIANNUM) $result.=JalaliCalendar::Convertnumber2farsi($result1);
  86                      else $result.=$result1;
  87                      break;
  88                  case "G":
  89                      $result1=date("G",$need);
  90                      if(_JDF_USE_PERSIANNUM) $result.=JalaliCalendar::Convertnumber2farsi($result1);
  91                      else $result.=$result1;
  92                      break;
  93                      case "h":
  94                      $result1=date("h",$need);
  95                      if(_JDF_USE_PERSIANNUM) $result.=JalaliCalendar::Convertnumber2farsi($result1);
  96                      else $result.=$result1;
  97                      break;
  98                  case "H":
  99                      $result1=date("H",$need);
 100                      if(_JDF_USE_PERSIANNUM) $result.=JalaliCalendar::Convertnumber2farsi($result1);
 101                      else $result.=$result1;
 102                      break;
 103                  case "i":
 104                      $result1=date("i",$need);
 105                      if(_JDF_USE_PERSIANNUM) $result.=JalaliCalendar::Convertnumber2farsi($result1);
 106                      else $result.=$result1;
 107                      break;
 108                  case "j":
 109                      list( $jyear, $jmonth, $jday ) = JalaliCalendar::gregorian_to_jalali($year, $month, $day);
 110                      $result1=$jday;
 111                      if(_JDF_USE_PERSIANNUM) $result.=JalaliCalendar::Convertnumber2farsi($result1);
 112                      else $result.=$result1;
 113                      break;
 114                  case "l":
 115                      $result1=date("l",$need);
 116                      if($result1=="Saturday") $result1=_JDF_Sat_LONG;
 117                      else if($result1=="Sunday") $result1=_JDF_Sun_LONG;
 118                      else if($result1=="Monday") $result1=_JDF_Mon_LONG;
 119                      else if($result1=="Tuesday") $result1=_JDF_Tue_LONG;
 120                      else if($result1=="Wednesday") $result1=_JDF_Wed_LONG;
 121                      else if($result1=="Thursday") $result1=_JDF_Thu_LONG;
 122                      else if($result1=="Friday") $result1=_JDF_Fri_LONG;
 123                      $result.=$result1;
 124                      break;
 125                  case "m":
 126                      list( $jyear, $jmonth, $jday ) = JalaliCalendar::gregorian_to_jalali($year, $month, $day);
 127                      if($jmonth<10) $result1="0".$jmonth;
 128                      else    $result1=$jmonth;
 129                      if(_JDF_USE_PERSIANNUM) $result.=JalaliCalendar::Convertnumber2farsi($result1);
 130                      else $result.=$result1;
 131                      break;
 132                  case "M":
 133                      list( $jyear, $jmonth, $jday ) = JalaliCalendar::gregorian_to_jalali($year, $month, $day);
 134                      $result.=monthname($jmonth);
 135                      break;
 136                  case "n":
 137                      list( $jyear, $jmonth, $jday ) = JalaliCalendar::gregorian_to_jalali($year, $month, $day);
 138                      $result1=$jmonth;
 139                      if(_JDF_USE_PERSIANNUM) $result.=JalaliCalendar::Convertnumber2farsi($result1);
 140                      else $result.=$result1;
 141                      break;
 142                  case "s":
 143                      $result1=date("s",$need);
 144                      if(_JDF_USE_PERSIANNUM) $result.=JalaliCalendar::Convertnumber2farsi($result1);
 145                      else $result.=$result1;
 146                      break;
 147                  case "S":
 148                      $result.=_JDF_Suffix;
 149                      break;
 150                  case "t":
 151                      $result.=JalaliCalendar::lastday ($month,$day,$year);
 152                      break;
 153                  case "w":
 154                      $result1=date("w",$need);
 155                      if(_JDF_USE_PERSIANNUM) $result.=JalaliCalendar::Convertnumber2farsi($result1);
 156                      else $result.=$result1;
 157                      break;
 158                  case "y":
 159                      list( $jyear, $jmonth, $jday ) = JalaliCalendar::gregorian_to_jalali($year, $month, $day);
 160                      $result1=substr($jyear,2,4);
 161                      if(_JDF_USE_PERSIANNUM) $result.=JalaliCalendar::Convertnumber2farsi($result1);
 162                      else $result.=$result1;
 163                      break;
 164                  case "Y":
 165                      list( $jyear, $jmonth, $jday ) = JalaliCalendar::gregorian_to_jalali($year, $month, $day);
 166                      $result1=$jyear;
 167                      if(_JDF_USE_PERSIANNUM) $result.=JalaliCalendar::Convertnumber2farsi($result1);
 168                      else $result.=$result1;
 169                      break;
 170                  default:
 171                      $result.=$subtype;
 172              }
 173          $i++;
 174          }
 175          return $result;
 176      }
 177      
 178      
 179      
 180  	function jmaketime($hour,$minute,$second,$jmonth,$jday,$jyear)
 181      {
 182          list( $year, $month, $day ) = JalaliCalendar::jalali_to_gregorian($jyear, $jmonth, $jday);
 183          $i=mktime($hour,$minute,$second,$month,$day,$year);
 184          return $i;
 185      }
 186      
 187      
 188      ///Find Day Begining Of Month

 189  	function mstart($month,$day,$year)
 190      {
 191          list( $jyear, $jmonth, $jday ) = JalaliCalendar::gregorian_to_jalali($year, $month, $day);
 192          list( $year, $month, $day ) = JalaliCalendar::jalali_to_gregorian($jyear, $jmonth, "1");
 193          $timestamp=mktime(0,0,0,$month,$day,$year);
 194          return date("w",$timestamp);
 195      }
 196      
 197      //Find Number Of Days In This Month

 198  	function lastday ($month,$day,$year)
 199      {
 200          $lastdayen=date("d",mktime(0,0,0,$month+1,0,$year));
 201          list( $jyear, $jmonth, $jday ) = JalaliCalendar::gregorian_to_jalali($year, $month, $day);
 202          $lastdatep=$jday;
 203          $jday=$jday2;
 204          while($jday2!="1")
 205          {
 206              if($day<$lastdayen)
 207              {
 208                  $day++;
 209                  list( $jyear, $jmonth, $jday2 ) = JalaliCalendar::gregorian_to_jalali($year, $month, $day);
 210                  if($jdate2=="1") break;
 211                  if($jdate2!="1") $lastdatep++;
 212              }
 213              else
 214              {
 215                  $day=0;
 216                  $month++;
 217                  if($month==13)
 218                  {
 219                          $month="1";
 220                          $year++;
 221                  }
 222              }
 223      
 224          }
 225          return $lastdatep-1;
 226      }
 227      
 228      //translate number of month to name of month

 229  	function monthname($month)
 230      {
 231      
 232          if($month=="01") return _JDF_Far;
 233      
 234          if($month=="02") return _JDF_Ord;
 235      
 236          if($month=="03") return _JDF_Kho;
 237      
 238          if($month=="04") return _JDF_Tir;
 239      
 240          if($month=="05") return _JDF_Mor;
 241      
 242          if($month=="06") return _JDF_Sha;
 243      
 244          if($month=="07") return _JDF_Meh;
 245      
 246          if($month=="08") return _JDF_Aba;
 247      
 248          if($month=="09") return _JDF_Aza;
 249      
 250          if($month=="10") return _JDF_Dey;
 251      
 252          if($month=="11") return _JDF_Bah;
 253      
 254          if($month=="12") return _JDF_Esf;
 255      }
 256      
 257      ////here convert to  number in persian

 258  	function Convertnumber2farsi($srting)
 259      {
 260          $stringtemp="";
 261          $len=strlen($srting);
 262          for($sub=0;$sub<$len;$sub++)
 263          {
 264           if(substr($srting,$sub,1)=="0")$stringtemp.=_JDF_Num0;
 265           elseif(substr($srting,$sub,1)=="1")$stringtemp.=_JDF_Num1;
 266           elseif(substr($srting,$sub,1)=="2")$stringtemp.=_JDF_Num2;
 267           elseif(substr($srting,$sub,1)=="3")$stringtemp.=_JDF_Num3;
 268           elseif(substr($srting,$sub,1)=="4")$stringtemp.=_JDF_Num4;
 269           elseif(substr($srting,$sub,1)=="5")$stringtemp.=_JDF_Num5;
 270           elseif(substr($srting,$sub,1)=="6")$stringtemp.=_JDF_Num6;
 271           elseif(substr($srting,$sub,1)=="7")$stringtemp.=_JDF_Num7;
 272           elseif(substr($srting,$sub,1)=="8")$stringtemp.=_JDF_Num8;
 273           elseif(substr($srting,$sub,1)=="9")$stringtemp.=_JDF_Num9;
 274           else {$stringtemp.=substr($srting,$sub,2);$sub++;}
 275      
 276          }
 277      return   $stringtemp;
 278      
 279      }///end convert to number in persian

 280      
 281      
 282      ////here convert to  number in english

 283  	function Convertnumber2english($srting)
 284      {
 285          $stringtemp="";
 286          $len=strlen($srting);
 287      
 288          for($sub=0;$sub<$len;$sub+=2)
 289          {
 290           if(substr($srting,$sub,2)==_JDF_Num0)$stringtemp.="0";
 291           elseif(substr($srting,$sub,2)==_JDF_Num1)$stringtemp.="1";
 292           elseif(substr($srting,$sub,2)==_JDF_Num2)$stringtemp.="2";
 293           elseif(substr($srting,$sub,2)==_JDF_Num3)$stringtemp.="3";
 294               elseif(substr($srting,$sub,2)==_JDF_Num4)$stringtemp.="4";
 295           elseif(substr($srting,$sub,2)==_JDF_Num5)$stringtemp.="5";
 296           elseif(substr($srting,$sub,2)==_JDF_Num6)$stringtemp.="6";
 297           elseif(substr($srting,$sub,2)==_JDF_Num7)$stringtemp.="7";
 298           elseif(substr($srting,$sub,2)==_JDF_Num8)$stringtemp.="8";
 299           elseif(substr($srting,$sub,2)==_JDF_Num9)$stringtemp.="9";
 300           else {$stringtemp.=substr($srting,$sub,1);$sub--;}
 301           }
 302      return   $stringtemp;
 303      
 304      }///end convert to number in english

 305      
 306      
 307      // "jalali.php" is convertor to and from Gregorian and Jalali calendars.

 308      // Copyright (C) 2000  Roozbeh Pournader and Mohammad Toossi

 309      //

 310      // This program is free software; you can redistribute it and/or

 311      // modify it under the terms of the GNU General Public License

 312      // as published by the Free Software Foundation; either version 2

 313      // of the License, or (at your option) any later version.

 314      //

 315      // This program is distributed in the hope that it will be useful,

 316      // but WITHOUT ANY WARRANTY; without even the implied warranty of

 317      // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

 318      // GNU General Public License for more details.

 319      //

 320      // A copy of the GNU General Public License is available from:

 321      //

 322      //    <a href="http://www.gnu.org/copyleft/gpl.html" target="_blank">http://www.gnu.org/copyleft/gpl.html</a>

 323      //

 324      
 325      
 326  	function div($a,$b) {
 327          return (int) ($a / $b);
 328      }
 329      
 330  	function gregorian_to_jalali ($g_y, $g_m, $g_d)
 331      {
 332          $g_days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
 333          $j_days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);
 334      
 335      
 336      
 337      
 338      
 339         $gy = $g_y-1600;
 340         $gm = $g_m-1;
 341         $gd = $g_d-1;
 342      
 343         $g_day_no = 365*$gy+JalaliCalendar::div($gy+3,4)-JalaliCalendar::div($gy+99,100)+JalaliCalendar::div($gy+399,400);
 344      
 345         for ($i=0; $i < $gm; ++$i)
 346            $g_day_no += $g_days_in_month[$i];
 347         if ($gm>1 && (($gy%4==0 && $gy%100!=0) || ($gy%400==0)))
 348            /* leap and after Feb */

 349            $g_day_no++;
 350         $g_day_no += $gd;
 351      
 352         $j_day_no = $g_day_no-79;
 353      
 354         $j_np = JalaliCalendar::div($j_day_no, 12053); /* 12053 = 365*33 + 32/4 */
 355         $j_day_no = $j_day_no % 12053;
 356      
 357         $jy = 979+33*$j_np+4*JalaliCalendar::div($j_day_no,1461); /* 1461 = 365*4 + 4/4 */
 358      
 359         $j_day_no %= 1461;
 360      
 361         if ($j_day_no >= 366) {
 362            $jy += JalaliCalendar::div($j_day_no-1, 365);
 363            $j_day_no = ($j_day_no-1)%365;
 364         }
 365      
 366         for ($i = 0; $i < 11 && $j_day_no >= $j_days_in_month[$i]; ++$i)
 367            $j_day_no -= $j_days_in_month[$i];
 368         $jm = $i+1;
 369         $jd = $j_day_no+1;
 370      
 371         return array($jy, $jm, $jd);
 372      }
 373      
 374  	function jalali_to_gregorian($j_y, $j_m, $j_d)
 375      {
 376          $g_days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
 377          $j_days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);
 378      
 379      
 380      
 381         $jy = $j_y-979;
 382         $jm = $j_m-1;
 383         $jd = $j_d-1;
 384      
 385         $j_day_no = 365*$jy + JalaliCalendar::div($jy, 33)*8 + JalaliCalendar::div($jy%33+3, 4);
 386         for ($i=0; $i < $jm; ++$i)
 387            $j_day_no += $j_days_in_month[$i];
 388      
 389         $j_day_no += $jd;
 390      
 391         $g_day_no = $j_day_no+79;
 392      
 393         $gy = 1600 + 400*JalaliCalendar::div($g_day_no, 146097); /* 146097 = 365*400 + 400/4 - 400/100 + 400/400 */
 394         $g_day_no = $g_day_no % 146097;
 395      
 396         $leap = true;
 397         if ($g_day_no >= 36525) /* 36525 = 365*100 + 100/4 */
 398         {
 399            $g_day_no--;
 400            $gy += 100*JalaliCalendar::div($g_day_no,  36524); /* 36524 = 365*100 + 100/4 - 100/100 */
 401            $g_day_no = $g_day_no % 36524;
 402      
 403            if ($g_day_no >= 365)
 404               $g_day_no++;
 405            else
 406               $leap = false;
 407         }
 408      
 409         $gy += 4*JalaliCalendar::div($g_day_no, 1461); /* 1461 = 365*4 + 4/4 */
 410         $g_day_no %= 1461;
 411      
 412         if ($g_day_no >= 366) {
 413            $leap = false;
 414      
 415            $g_day_no--;
 416            $gy += JalaliCalendar::div($g_day_no, 365);
 417            $g_day_no = $g_day_no % 365;
 418         }
 419      
 420         for ($i = 0; $g_day_no >= $g_days_in_month[$i] + ($i == 1 && $leap); $i++)
 421            $g_day_no -= $g_days_in_month[$i] + ($i == 1 && $leap);
 422         $gm = $i+1;
 423         $gd = $g_day_no+1;
 424      
 425         return array($gy, $gm, $gd);
 426      }
 427      
 428      /*

 429       * Function to Convert user input time (yyyy-mm-dd hh:mm:ss) in persian to english && Hegira date to Gregorian - by irmtfan (www.jadoogaran.org)

 430       */
 431  	function inputTimeToGregorian($usertime)
 432      {
 433      
 434          list( $jfdate, $ftime) = preg_split ( '/ /', $usertime );
 435          list( $fhour, $fminut, $fsec ) =  preg_split ( '/:/', $ftime);
 436          // convert persian numbers to english if exist

 437          $hour=JalaliCalendar::Convertnumber2english($fhour);
 438          $minut=JalaliCalendar::Convertnumber2english($fminut);
 439          $sec=JalaliCalendar::Convertnumber2english($fsec);
 440          list( $jfyear, $jfmonth, $jfday ) =  preg_split ( '/-/', $jfdate);
 441          // convert persian numbers to english if exist

 442          $jyear=JalaliCalendar::Convertnumber2english($jfyear);
 443          $jmonth=JalaliCalendar::Convertnumber2english($jfmonth);
 444          $jday=JalaliCalendar::Convertnumber2english($jfday);
 445      
 446          if (_USE_HEGIRADATE) {
 447              $maket=JalaliCalendar::jmaketime($hour - _JDF_TZhours,$minut - _JDF_TZminute,$sec,$jmonth,$jday,$jyear);
 448          } else {
 449              $maket=mktime($hour,$minut,$sec,$jmonth,$jday,$jyear);
 450          }
 451          $usertime=date("Y-m-d H:i:s",$maket);
 452          return $usertime;
 453      }
 454  }
 455  
 456  ?>


Généré le : Mon Nov 26 21:04:15 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics