[ Index ] |
|
Code source de LifeType 1.2.4 |
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 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Mon Nov 26 21:04:15 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |