PDA

View Full Version : سوال: تبدیل تاریخ شمسی به timestamp



navid3d_69
سه شنبه 31 اردیبهشت 1392, 00:10 صبح
سلام من می خوام تاریخی که با datepicker انتخاب میشه و شمسی هست مثلا 1392/03/10 به صورت timestamp ذخیره کنم چجوری باید این کار رو انجام بدم؟

$ M 3 H R D A D $
سه شنبه 31 اردیبهشت 1392, 00:27 صبح
<?php
function div($a,$b)
{
return (int) ($a / $b);
}
function persian_to_gregorian($j_y, $j_m, $j_d)
{
$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);
$jy = $j_y-979;
$jm = $j_m-1;
$jd = $j_d-1;
$j_day_no = 365*$jy + div($jy, 33)*8 + div($jy%33+3, 4);
for ($i=0; $i < $jm; ++$i)
$j_day_no += $j_days_in_month[$i];
$j_day_no += $jd;
$g_day_no = $j_day_no+79;
$gy = 1600 + 400*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*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 += 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;
if(strlen($gm)==1) $gm='0'.$gm;
if(strlen($gd)==1) $gd='0'.$gd;
return array($gy,$gm,$gd);
}

$date = explode("/",'1392/03/10');
$date = persian_to_gregorian($date[0],$date[1],$date[2]);
$date = implode('-',$date);
$timestamp = strtotime($date);
echo $timestamp;
?>

MMSHFE
سه شنبه 31 اردیبهشت 1392, 01:30 صبح
استفاده از JDF (http://jdf.scr.ir) و تبدیل با کمک تابع jmktime

rezaonline.net
سه شنبه 31 اردیبهشت 1392, 02:38 صبح
https://github.com/vahid-sohrabloo/Pdate
تابع pmktime