به اسکریپت هایی از قبیل همین که لینکش رو گذاشتید DatePicker میگن که فقط مربوط به بخش view سایت شما میشن.
شما برای اینکه تاریخ رو از کاربر بگیرید میتونید تکست باکس خالی هم بذارید و تاریخ رو مجبوره تو فرمتی که میخواید وارد کنه و اسکریپت های DatePicker میان این کار رو برای کاربر راحت تر میکنن. پس این اسکریپت ربطی به ذخیره توی دیتابیس و تبدیل تاریخ و... نداره و برای اینکار باید از اسکریپت php دیگری استفاده کنید(و یا اسکریپت خودتون رو بنویسید).
من خودم از این اسکریپت استفاده میکنم:
<?php
/*
Created by : Jalali
modified by : Mohammad Dayyan
1387/5/15
*/
class persiandate
{
function monthname($month)
{
if($month=="01") return "فروردين";
if($month=="02") return "ارديبهشت";
if($month=="03") return "خرداد";
if($month=="04") return "تير";
if($month=="05") return "مرداد";
if($month=="06") return "شهريور";
if($month=="07") return "مهر";
if($month=="08") return "آبان";
if($month=="09") return "آذر";
if($month=="10") return "دي";
if($month=="11") return "بهمن";
if($month=="12") return "اسفند";
}
function div($a,$b)
{
return (int) ($a / $b);
}
function gregorian_to_mds ($g_y, $g_m, $g_d)
{
$g_days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$m_days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);
$gy = $g_y-1600;
$gm = $g_m-1;
$gd = $g_d-1;
$g_day_no = 365*$gy+$this->div($gy+3,4)-$this->div($gy+99,100)+$this->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)))
/* leap and after Feb */
$g_day_no++;
$g_day_no += $gd;
$m_day_no = $g_day_no-79;
$j_np = $this->div($m_day_no, 12053); /* 12053 = 365*33 + 32/4 */
$m_day_no = $m_day_no % 12053;
$jy = 979+33*$j_np+4*$this->div($m_day_no,1461); /* 1461 = 365*4 + 4/4 */
$m_day_no %= 1461;
if ($m_day_no >= 366) {
$jy += $this->div($m_day_no-1, 365);
$m_day_no = ($m_day_no-1)%365;
}
for ($i = 0; $i < 11 && $m_day_no >= $m_days_in_month[$i]; ++$i)
$m_day_no -= $m_days_in_month[$i];
$jm = $i+1;
$jd = $m_day_no+1;
return array($jy, $jm, $jd);
}
function mds_to_gregorian($m_y, $j_m, $m_d)
{
$g_days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$m_days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);
$jy = $m_y-979;
$jm = $j_m-1;
$jd = $m_d-1;
$m_day_no = 365*$jy + $this->div($jy, 33)*8 + $this->div($jy%33+3, 4);
for ($i=0; $i < $jm; ++$i)
$m_day_no += $m_days_in_month[$i];
$m_day_no += $jd;
$g_day_no = $m_day_no+79;
$gy = 1600 + 400*$this->div($g_day_no, 146097); /* 146097 = 365*400 + 400/4 - 400/100 + 400/400 */
$g_day_no = $g_day_no % 146097;
$leap = true;
if ($g_day_no >= 36525) /* 36525 = 365*100 + 100/4 */
{
$g_day_no--;
$gy += 100*$this->div($g_day_no, 36524); /* 36524 = 365*100 + 100/4 - 100/100 */
$g_day_no = $g_day_no % 36524;
if ($g_day_no >= 365)
$g_day_no++;
else
$leap = false;
}
$gy += 4*$this->div($g_day_no, 1461); /* 1461 = 365*4 + 4/4 */
$g_day_no %= 1461;
if ($g_day_no >= 366) {
$leap = false;
$g_day_no--;
$gy += $this->div($g_day_no, 365);
$g_day_no = $g_day_no % 365;
}
for ($i = 0; $g_day_no >= $g_days_in_month[$i] + ($i == 1 && $leap); $i++)
$g_day_no -= $g_days_in_month[$i] + ($i == 1 && $leap);
$gm = $i+1;
$gd = $g_day_no+1;
return array($gy, $gm, $gd);
}
}
?>
این هم مثالی از استفاده از این کلاس:
$pd = new persiandate();
$array = $pd->mds_to_gregorian('1392', '11', '18');
print_r($array);
echo "<hr />";
$array = $pd->gregorian_to_mds('2014', '2', '6');
print_r($array);
ذخیره توی دیتابیس و سلکت هم که دیگه توضیح نمیخواد.