$TimeZone = 4.5;
$DefaultTime = time() + 3600 * ($TimeZone + date("I"));
$ArrayShamsiMonthName = array ("فروردين", "ارديبهشت", "خرداد", "تير", "مرداد", "شهريور", "مهر", "آبان", "آذر", "دي", "بهمن", "اسفند");
$ArrayShamsiDayName = Array ("يكشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنج شنبه", "جمعه", "شنبه");
function div($A, $B)
{
return (int)($A / $B);
}
function DateMiladiToShamsi($GetDateYear, $GetDateMonth, $GetDateDay)
{
global $DefaultTime;
global $ArrayShamsiMonthName;
global $ArrayShamsiDayName;
$MiladiDaysInMonth = array (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$ShamsiDaysInMonth = array (31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);
$DateMiladiYear = $GetDateYear - 1600;
$DateMiladiMonth = $GetDateMonth - 1;
$DateMiladiDay = $GetDateDay - 1;
$DateMiladiDayNo = 365 * $DateMiladiYear + div($DateMiladiYear + 3, 4) - div($DateMiladiYear + 99, 100) + div($DateMiladiYear + 399, 400);
for($i = 0; $i < $DateMiladiMonth; $i++)
$DateMiladiDayNo += $MiladiDaysInMonth[$i];
if($DateMiladiMonth > 1 and (($DateMiladiYear % 4 == 0 and $DateMiladiYear % 100 != 0) or ($DateMiladiYear % 400 == 0)))
$DateMiladiDayNo++;
$DateMiladiDayNo += $DateMiladiDay;
$DateShamsiDayNo = $DateMiladiDayNo - 79;
$DateShamsiDayNP = div($DateShamsiDayNo, 12053);
$DateShamsiDayNo = $DateShamsiDayNo % 12053;
$DateShamsiYear = 979 + 33 * $DateShamsiDayNP + 4 * div($DateShamsiDayNo, 1461);
$DateShamsiDayNo %= 1461;
if($DateShamsiDayNo >= 366)
{
$DateShamsiYear += div($DateShamsiDayNo - 1, 365);
$DateShamsiDayNo = ($DateShamsiDayNo - 1) % 365;
}
for($i = 0; $i < 11 and $DateShamsiDayNo >= $ShamsiDaysInMonth[$i]; $i++)
$DateShamsiDayNo -= $ShamsiDaysInMonth[$i];
$DateShamsiYear = $DateShamsiYear;
$DateShamsiMonth = ($i + 1 >= 10)? ($i + 1) : ('0'.($i + 1));
$DateShamsiMonthName = $ArrayShamsiMonthName[$DateShamsiMonth - 1];
$DateShamsiDay = ($DateShamsiDayNo + 1 >= 10)? ($DateShamsiDayNo + 1) : ('0'.($DateShamsiDayNo + 1));
$DateShamsiDayName = $ArrayShamsiDayName[date(w, $DefaultTime)];
return array($DateShamsiYear, $DateShamsiMonth, $DateShamsiMonthName, $DateShamsiDay, $DateShamsiDayName);
}