رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در محاسبه تابع jmktime
#1
سلام فرض کنید من یه تاریخ دارم 

jmktime(0,0,0,$month,$day,$year);
# 01/01/1395
و میخوام بهش یک سال و هشت ماه اضافه کنم 

jmktime(0,0,0,$month + 8,$day,$year + 1);
# 01/08/1396


اما اگه تعداد ماه هایی که اضافه میکنم از 8 بیشتر باشه مثلا 11 ماه بشه از تعداد روز ها دو یا سه روز کم میکنه !
jmktime(0,0,0,$month + 11,$day,$year + 1);
# 29/10/1396

چندبار به روش های مختلف امتحان کردم روی نسخه های مختلف jdf اما مشکل برطرف نشد . میشه با تابع getdate همچین کاری کرد؟ چطور ؟ مرسی
عاقبت خاک گل کوزه گران خواهی شد...
پاسخ
تشکر شده توسط:
#2
بنظرم مشکل تعداد ماهها نیست. تعداد روزهای ماههاست. این تابع درون خودش داره از توابع میلادی استفاده میکنه. یه تست کنید شاید این روش کار کرد: با jalali_to_gregorian تاریخ شمسی رو به میلادی تبدیل کنید. بعد با mktime تاریخ جدید رو محاسبه کنید و دوباره با gregorian_to_jalali به شمسی تبدیل کنید.
پاسخ
تشکر شده توسط: Thorin
#3
(25-01-1395، 05:45 ب.ظ)ADMIN نوشته: بنظرم مشکل تعداد ماهها نیست. تعداد روزهای ماههاست. این تابع درون خودش داره از توابع میلادی استفاده میکنه. یه تست کنید شاید این روش کار کرد: با jalali_to_gregorian تاریخ شمسی رو به میلادی تبدیل کنید. بعد با mktime تاریخ جدید رو محاسبه کنید و دوباره با gregorian_to_jalali به شمسی تبدیل کنید.

ممنون ،بله درست میفرمایید مشکل تعداد روزهای ماه هاست که 6 ماه اول سال رو 31 روزه و 6 ماه دوم سال رو 30 روزه حساب میکنه 
چند تا شرط گذاشتم که  به نسبت ماه ها نیمه دوم به روز ها اضافه کنه که داره درست هم جواب میده 

       if($month ==  7){$days = 1;}
        if($month ==  8){$days = 2;}
       if($month ==  9){$days = 3;}
       if($month == 10){$days = 4;}
       if($month == 11){$days = 5;}
       if($month == 12){$days = 6;}
jmktime(0,0,0,$month + 11,$day+$days,$year + 1);

اینجوری کارایی برنامه میاد پایین جناب مهندس شهرکی ؟
عاقبت خاک گل کوزه گران خواهی شد...
پاسخ
تشکر شده توسط:
#4
$m = 11;
jmktime(0, 0, 0, $month + $m, $days + max(0, ($m - 6)), $year + 1);
پاسخ
تشکر شده توسط: Thorin




کاربران در حال بازدید این موضوع: 3 مهمان