به نظر من بهتره که تاریخ رو به صورت timestamp تو دیتابیس ذخیره کنی یعنی مقداری که تابع time() بهت میده، اینطوری بعدا قدرت مانور بیشتری میتونی داشته باشی
برای تبدیل به تاریخ شمسی میتوتی از این تابع استفاده بکنی
function fnum($num)
{
$nums = array('٠','١','٢','٣','۴','۵','۶','٧','٨' ,'٩');
$num = (string) $num;
$n = array();
for($i=0;$i<strlen($num);$i++)
{
$n[$i] = $nums[(int) $num[$i]];
}
return join('',$n);
}
$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);
function gregorian_to_jalali($g_y, $g_m, $g_d)
{
global $g_days_in_month;
global $j_days_in_month;
$div = create_function('$a,$b','return (int) ($a / $b);');
$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 = $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 persiandate($time)
{
@$a=gregorian_to_jalali(date('Y',$time),date('m',$ time),date('d',$time));
return fnum($a[0]).'/'.fnum($a[1]).'/'.fnum($a[2]);
}