amirtala65
Member
سلام من در حال طراحی اولین سایتم هستم در دیتابیسم تاریخ به صورت میلادی سیو میشه میخواستم برای قسمت درج خبر تاریخ شمسی آن خبر رو قرار بدم چه کار کنم؟
بهترین راه اینه که تابع ()time رو ذخیره کنی و با استفاده از توابع date و jdate به هر فرمتی که خواستی تبدیل کنی.سلام من در حال طراحی اولین سایتم هستم در دیتابیسم تاریخ به صورت میلادی سیو میشه میخواستم برای قسمت درج خبر تاریخ شمسی آن خبر رو قرار بدم چه کار کنم؟
<?php
$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);
$j_months = array("فروردين","ارديبهشت","خرداد","تير","مرداد","شهريور","مهر","آبان","آذر","دي","بهمن","اسفند");
$j_days = array("دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه","یکشنبه");
function div($a, $b)
{
return (int) ($a / $b);
}
function gregorian_to_jalali($g_y, $g_m, $g_d)
{
global $g_days_in_month;
global $j_days_in_month;
$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)))
/**/
++$g_day_no;
$g_day_no += $gd;
$j_day_no = $g_day_no-79;
$j_np = div($j_day_no, 12053);
$j_day_no %= 12053;
$jy = 979+33*$j_np+4*div($j_day_no,1461);
$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);
}
function farsinum($str)
{
if (strlen($str) == 1)
$str = "0".$str;
$out = "";
for ($i = 0; $i < strlen($str); ++$i) {
$c = substr($str, $i, 1);
$out .= pack("C*", 0xDB, 0xB0 + $c);
}
return $out;
}
/**/
function parsnum($str)
{
$out = "";
$insideTag = false;
$besideEn = false;
for ($i = 0; $i < strlen($str); ++$i)
{
$c = substr($str, $i, 1);
$b = @substr($str, $i-1, 1);
$n = @substr($str, $i+1, 1);
if(ord($c) == 60)
$insideTag = true;
if(ord($c) == 62)
$insideTag = false;
if(preg_match("/[a-zA-Z]/",$b)||preg_match("/[a-zA-Z]/",$n))
$besideEn = true;
if(preg_match("[\\s ]",$b)||preg_match("[\\s ]",$n))
$besideEn = false;
if(ord($c)>47 && ord($c)<58 && !$insideTag && !$besideEn)
$out .= pack("C*", 0xDB, 0xB0 + $c);
else
$out .= $c;
}
return $out;
}
function yekta()
{
$datestamp = date("Y-m-d");
global $j_months;
global $j_days;
$tzoffset = 0;
list($date,$time) = explode(" ",$datestamp);
list($year,$month,$day) = explode("-",$date);
list($hour,$minute,$second) = explode(":",$time);
$hour = $hour + $tzoffset;
list($jyear, $jmonth, $jday) = gregorian_to_jalali($year,$month,$day);
$sDate = $j_days[date("N")-1]." ".parsnum($jday)." ".$j_months[$jmonth-1]." ".farsinum($jyear);
return "<span lang='fa' dir='rtl'>" . $sDate . "</span>";
}
echo yekta();
?>
$date=date("y,m,d");