تالار گفتمان nCIS.ir

نسخه‌ی کامل: مشکل در محاسبه تابع jmktime
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام فرض کنید من یه تاریخ دارم 

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 همچین کاری کرد؟ چطور ؟ مرسی
بنظرم مشکل تعداد ماهها نیست. تعداد روزهای ماههاست. این تابع درون خودش داره از توابع میلادی استفاده میکنه. یه تست کنید شاید این روش کار کرد: با jalali_to_gregorian تاریخ شمسی رو به میلادی تبدیل کنید. بعد با mktime تاریخ جدید رو محاسبه کنید و دوباره با gregorian_to_jalali به شمسی تبدیل کنید.
(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);

اینجوری کارایی برنامه میاد پایین جناب مهندس شهرکی ؟
$m = 11;
jmktime(0, 0, 0, $month + $m, $days + max(0, ($m - 6)), $year + 1);