PDA

View Full Version : سوال: اضافه کردن روز ماه و سال به تاریخ شمسی



mahdyari77
شنبه 08 آبان 1395, 15:50 عصر
من از jdf برای تبدیل تاریخ شمسی و میلادی به هم استفاده میکنم
تو دیتابیس من تاریخ ها با فرمت Date("Y-m-d") ثبت شده مثلا تاریخ امروز
2016/10/29
معادل با 1395/8/8
حالا من میخوام شش ماه به این اضافه کنم اما به صورت شمسی نشون بدم
مشکل اینجاست که شش ماه به این اضافه کنم میشه
2017-04-29
اما اگر به شمسی تبدیلش کنم میشه
1396/2/9
یعنی به میلادی همون شش ماه دیگه میشه اما به شمسی میشه شش ماه و یک روز دیگه
فکر کنم مشکل اینجاست که من ماه رو به میلادی به تاریخم اضافه میکنم اینطوری

$guaranteeExpire = date("Y-m-d", strtotime($Date."+ ". 6 ." months + ". 0." days"));

راهی هست که تاریخ هارو به شمسی اضافه کنم ؟ یا اول تبدیل کنم به تاریخ شمسی بعد اضافه کنم ؟
متاسفانه تابع strtotime رو jdf نداره

ویرایش : دوستان اگر بد پرسیدم شما خودتون الآن سعی کنید در PHP به تاریخ شمسی امروز 6 ماه اضافه کنید ببینید چی خروجی بهتون میده.

pcse7en
شنبه 08 آبان 1395, 16:23 عصر
خوب اول با تاریخ میلادی 6 ماه دیگه رو حساب کن بعدش تبدیلش کن به شمسی با jdate

پیام حیاتی
شنبه 08 آبان 1395, 16:25 عصر
سلام
تاریخ را بر اساس timestamp ذخیره کنید.(فیلد رو int قرار بدید.)، بعد از استخراج عملیات مورد نظر رو انجام بدید.


require_once 'jdf.php';


$ts = time();
echo $ts.'<br />'.PHP_EOL;


echo date('Y/m/d - H:i:s', $ts).'<br />'.PHP_EOL;
echo date('l j F Y', $ts).'<br />'.PHP_EOL;




// نمایش تاریخ به صورت شمسی
echo '<hr />';
echo jdate('Y/m/d - H:i:s', $ts).'<br />'.PHP_EOL;
echo jdate('l j F Y', $ts).'<br />'.PHP_EOL;

mahdyari77
شنبه 08 آبان 1395, 16:56 عصر
خوب اول با تاریخ میلادی 6 ماه دیگه رو حساب کن بعدش تبدیلش کن به شمسی با jdate

خوب همین کارو میکنم اما خروجی رو اشتباه به من میده چون 6 ماه دیگه ی میلادی مساوی هست با شش ماه و یکروز دیگه ی شمسی
میتونید با یه تقویم معمولی همین الآن امتحان کنید



سلام
تاریخ را بر اساس timestamp ذخیره کنید.(فیلد رو int قرار بدید.)، بعد از استخراج عملیات مورد نظر رو انجام بدید.


require_once 'jdf.php';


$ts = time();
echo $ts.'<br />'.PHP_EOL;


echo date('Y/m/d - H:i:s', $ts).'<br />'.PHP_EOL;
echo date('l j F Y', $ts).'<br />'.PHP_EOL;




// نمایش تاریخ به صورت شمسی
echo '<hr />';
echo jdate('Y/m/d - H:i:s', $ts).'<br />'.PHP_EOL;
echo jdate('l j F Y', $ts).'<br />'.PHP_EOL;


خوب عزیز الآن هم با strtotime در حقیقت دارم همون
$ts=time() شمارو میگیرم

نمیدونم من بد سوال رو پرسیدم یا دوستان مطالعه نمیکنن مشکل من الآن اینه که اگر 6 ماه میلادی به یک تاریخ میلادی اضافه میکنم معادل با شش ماه و یک روز شمسی میشه
فکر کنم بخاطر تفاوت تعداد روز های ماه های میلادی و شمسی هست یا چیزی شبیه به این
حالا من میخوام بخاطر این مشکل تعداد روز هارو مستقیم به تاریخ شمسی اضافه کنم نه این که اول به تاریخ میلادی اضافه کنم بعد تبدیلش کنم به شمسی

pcse7en
شنبه 08 آبان 1395, 17:11 عصر
خوب بیا time() رو منهای 60*60*24 کن یه روزش به دست بیاد.

mahdyari77
شنبه 08 آبان 1395, 17:28 عصر
خوب بیا time() رو منهای 60*60*24 کن یه روزش به دست بیاد.

خوب همیشه که یروز نیست تو بعضی ماها این اتفاق نمیوفته تو بعضی ماه ها هم دو روز میشه مثلا 12 ماه اگر بکنم میشه 2 روز
دلیلش رو اگر بدونم یجوری حلش میکنم اما همینطوری که نمیشه یه روز کم کرد