/
  • مشکل با محاسبه تاریخ

  • صفحه‌ها (3):
  • ارسال پاسخ   امتیاز موضوع:
    • 1 رأی - میانگین امیتازات: 5
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی مشکل با محاسبه تاریخ
    نویسنده پیام
    mojtabadj آفلاین
    مجتبی پوراصغر
    ****

    ارسال‌ها: 298
    تاریخ عضویت: ۱۳۸۸ بهمن ۴
    اعتبار: 2
    تشکرها : 87
    ( 57 تشکر در 40 ارسال )
    ارسال: #1
    مشکل با محاسبه تاریخ
    سلام دوستان عزیز

    من میخوام مثلا تاریخ 20 روز قبل یا بعد رو بدونم باید چیکار کنم؟

    تابعی واسه اینکار نوشتین؟

    فرمت تاریخم بدین صورت هستش YYYY/MM/DD
    ۱۳۸۹ تير ۱۳ ۰۵:۰۲ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    oia آفلاین
    محمد ثانی
    *****

    ارسال‌ها: 2,012
    تاریخ عضویت: ۱۳۸۷ آذر ۲۶
    اعتبار: 66
    تشکرها : 2330
    ( 2091 تشکر در 1290 ارسال )
    ارسال: #2
    RE: مشکل با محاسبه تاریخ
    اگه تاریخت به صورت YYYY/MM/DD هستش
    ابتدا بیا مقدار سال، ماه و روز رو ازش استخراج کن
    کد PHP:
    $date 'YYYY/MM/DD';
    $date explode('/'$date); 
    توضیحات مربوط به تابع explode. کلیک کنید

    بعد تارخ رو تبدیل به ثانیه کن
    کد PHP:
    $date mktime(000$date[1], $date[2], $date[0]); 
    توضیحات مربوط به تابع mktime. کلیک کنید

    حالا مقداری از زمان رو که می خواید کم یا اضافه کنید به صورت ثانیه دربیاورید و از date$ کم کنید
    کد PHP:
    $ago = (60*60*24)*20;    // 20 day
    $date $date $ago

    حالا به زمانتون شکل بدید
    کد PHP:
    $date date('Y/m/d'$date); 
    توضیحات مربوط به تابع date.کلیک کنید

    حالا محتوی متغییر date$ تاریخ بیست روز قبله!!!
    موفق باشید
    (آخرین ویرایش در این ارسال: ۱۳۸۹ تير ۱۳ ۰۷:۱۸ عصر، توسط oia.)
    ۱۳۸۹ تير ۱۳ ۰۷:۱۶ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : mojtabadj molana faghani ali786 hidensoft
    mojtabadj آفلاین
    مجتبی پوراصغر
    ****

    ارسال‌ها: 298
    تاریخ عضویت: ۱۳۸۸ بهمن ۴
    اعتبار: 2
    تشکرها : 87
    ( 57 تشکر در 40 ارسال )
    ارسال: #3
    RE: مشکل با محاسبه تاریخ
    خیلی ممنون از کدت دوست عزیز

    ولی یه مشکلی هست این عملیاتی که شما انجام دادید واسه تاریخ میلادی درست کار میکنه ولی برای تاریخ شمسی چیکار باید کرد؟

    اگه راهنمایی کنید خیلی ممنون میشم
    برای تکمیل کار دوستمون من این توابع رو واسه تاریخ شمسی میزارم امیدوارم استفاده کنید

    کد PHP:
    function div($a,$b) {
    return (int) (
    $a $b);
    }
    function 
    gregorian_to_jalali ($g_y$g_m$g_d)
    {
    $g_days_in_month = array(312831303130313130313031);
    $j_days_in_month = array(313131313131303030303029);
    $gy $g_y-1600;
    $gm $g_m-1;
    $gd $g_d-1;
    $g_day_no 365*$gy+div($gy+3,4)-div($gy+99,100)+div($gy+399,400);
    for (
    $i=0$i $gm; ++$i)
    $g_day_no += $g_days_in_month[$i];
    if (
    $gm>&& (($gy%4==&& $gy%100!=0) || ($gy%400==0)))
    /* leap and after Feb */
    $g_day_no++;
    $g_day_no += $gd;
    $j_day_no $g_day_no-79;
    $j_np div($j_day_no12053); /* 12053 = 365*33 + 32/4 */
    $j_day_no $j_day_no 12053;
    $jy 979+33*$j_np+4*div($j_day_no,1461); /* 1461 = 365*4 + 4/4 */
    $j_day_no %= 1461;
    if (
    $j_day_no >= 366) {
    $jy += div($j_day_no-1365);
    $j_day_no = ($j_day_no-1)%365;

    }
    for (
    $i 0$i 11 && $j_day_no >= $j_days_in_month[$i]; ++$i)
    $j_day_no -= $j_days_in_month[$i];
    $jm $i+1;
    $jd $j_day_no+1;
    return array(
    $jy$jm$jd);
    }

    function 
    jalali_to_gregorian($j_y$j_m$j_d)
    {
    $g_days_in_month = array(312831303130313130313031);
    $j_days_in_month = array(313131313131303030303029);
    $jy $j_y-979;
    $jm $j_m-1;
    $jd $j_d-1;
    $j_day_no 365*$jy div($jy33)*div($jy%33+34);
    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_no146097); /* 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*div($g_day_no36524); /* 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_no1461); /* 1461 = 365*4 + 4/4 */
    $g_day_no %= 1461;
    if (
    $g_day_no >= 366) {
    $leap false;
    $g_day_no--;
    $gy += div($g_day_no365);
    $g_day_no $g_day_no 365;
    }
    for (
    $i 0$g_day_no >= $g_days_in_month[$i] + ($i == && $leap); $i++)
    $g_day_no -= $g_days_in_month[$i] + ($i == && $leap);
    $gm $i+1;
    $gd $g_day_no+1;
    return array(
    $gy$gm$gd);



    کد PHP:
    $date '2010/07/04';
    $date explode('/'$date); 
    $date mktime(000$date[1], $date[2], $date[0]); 
    $ago = (60*60*24)*20;    // 20 day
    $date $date $ago
    $date date('Y/m/d'$date); 

    $date_arr explode('/'$date); 

    $rgregorian_to_jalali($date_arr[0], $date_arr[1], $date_arr[2]);

    $dat=$r[0]."/".$r[1]."/".$r[2]; 
    (آخرین ویرایش در این ارسال: ۱۳۸۹ تير ۱۳ ۱۰:۳۷ عصر، توسط mojtabadj.)
    ۱۳۸۹ تير ۱۳ ۱۰:۱۶ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    mojtabadj آفلاین
    مجتبی پوراصغر
    ****

    ارسال‌ها: 298
    تاریخ عضویت: ۱۳۸۸ بهمن ۴
    اعتبار: 2
    تشکرها : 87
    ( 57 تشکر در 40 ارسال )
    ارسال: #4
    RE: مشکل با محاسبه تاریخ
    سلام دوستان

    یه سوال دیگه

    واسه 1 ماه قبلو بعد و یه سال قبلو بعد باید چیکار کنیم؟
    ۱۳۸۹ تير ۱۴ ۰۹:۴۹ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    parsig آفلاین
    عضو مهم
    ****

    ارسال‌ها: 280
    تاریخ عضویت: ۱۳۸۷ دي ۳۰
    اعتبار: 5
    تشکرها : 146
    ( 259 تشکر در 144 ارسال )
    ارسال: #5
    RE: مشکل با محاسبه تاریخ
    (۱۳۸۹ تير ۱۴ ۰۹:۴۹ صبح)mojtabadj نوشته شده توسط:  سلام دوستان

    یه سوال دیگه

    واسه 1 ماه قبلو بعد و یه سال قبلو بعد باید چیکار کنیم؟

    خیلی ساده ست :
    کد PHP:
    $ago = (60*60*24)*30;    // a month
    $ago = (60*60*24)*365;    // a year 
    و بقیه هم به همین ترتیب
    بعد اگر بنویسید :
    کد PHP:
    $date $date $ago
    برمی گرده به گذشته و اگر جمع انجام بدید می ره به آینده !
    __________________________________________________________________________
    [تصویر:  logo-small.jpg]
    ۱۳۸۹ تير ۱۴ ۱۱:۰۹ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : mojtabadj molana oia
    mojtabadj آفلاین
    مجتبی پوراصغر
    ****

    ارسال‌ها: 298
    تاریخ عضویت: ۱۳۸۸ بهمن ۴
    اعتبار: 2
    تشکرها : 87
    ( 57 تشکر در 40 ارسال )
    ارسال: #6
    RE: مشکل با محاسبه تاریخ
    (۱۳۸۹ تير ۱۴ ۱۱:۰۹ صبح)parsig نوشته شده توسط:  خیلی ساده ست :
    کد PHP:
    $ago = (60*60*24)*30;    // a month
    $ago = (60*60*24)*365;    // a year 

    تشکر از شما دوست عزیز

    ولی یه نکته انحرافی اینجاست اونم اینه که همه ماههای میلادی 30 روزه نیستند که!!!!!!!!!!!!!!

    حالا باید چیکار کرد؟
    (آخرین ویرایش در این ارسال: ۱۳۸۹ تير ۱۴ ۱۱:۵۵ صبح، توسط mojtabadj.)
    ۱۳۸۹ تير ۱۴ ۱۱:۵۴ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    mojtabajml آفلاین
    مجتبی جمالی
    ***

    ارسال‌ها: 135
    تاریخ عضویت: ۱۳۸۸ آذر ۳۰
    اعتبار: 2
    تشکرها : 20
    ( 119 تشکر در 72 ارسال )
    ارسال: #7
    RE: مشکل با محاسبه تاریخ
    یا سوال شما خیلی ساده ست یا من خوب متوجه نشدم بهر حال من از این روش استفاده می کنم:
    کد PHP:
    echo strtotime("now"), "\n";
    echo 
    strtotime("10 September 2000"), "\n";
    echo 
    strtotime("+1 day"), "\n";
    echo 
    strtotime("+1 week"), "\n";
    echo 
    strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
    echo 
    strtotime("next Thursday"), "\n"
    بخوبی هم جواب میده!

    نقل قول: من میخوام مثلا تاریخ 20 روز قبل یا بعد رو بدونم باید چیکار کنم؟
    کد PHP:
    echo pdate("YYYY/MM/DD",strtotime("+20 day")); 
    (آخرین ویرایش در این ارسال: ۱۳۸۹ تير ۱۴ ۰۳:۳۹ عصر، توسط mojtabajml.)
    ۱۳۸۹ تير ۱۴ ۰۳:۳۳ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : oia
    mojtabadj آفلاین
    مجتبی پوراصغر
    ****

    ارسال‌ها: 298
    تاریخ عضویت: ۱۳۸۸ بهمن ۴
    اعتبار: 2
    تشکرها : 87
    ( 57 تشکر در 40 ارسال )
    ارسال: #8
    RE: مشکل با محاسبه تاریخ
    سلام دوست عزیز

    این تابع pdate که مینویسم این اررور رو میده

    Call to undefined function pdate()
    ۱۳۸۹ تير ۱۴ ۰۷:۴۰ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    oia آفلاین
    محمد ثانی
    *****

    ارسال‌ها: 2,012
    تاریخ عضویت: ۱۳۸۷ آذر ۲۶
    اعتبار: 66
    تشکرها : 2330
    ( 2091 تشکر در 1290 ارسال )
    ارسال: #9
    RE: مشکل با محاسبه تاریخ
    نقل قول: ولی یه مشکلی هست این عملیاتی که شما انجام دادید واسه تاریخ میلادی درست کار میکنه ولی برای تاریخ شمسی چیکار باید کرد؟
    خب تاریخ میلادی رو بسازید بعد با توابعی که وجود داره به شمسی تبدیل کنید!

    نقل قول: واسه 1 ماه قبلو بعد و یه سال قبلو بعد باید چیکار کنیم؟
    طبع دستورالعمل جناب parsig برید فک کنم افاقه کنه Smile

    نقل قول: ولی یه نکته انحرافی اینجاست اونم اینه که همه ماههای میلادی 30 روزه نیستند که!!!!!!!!!!!!!!
    خب سی روز قبل با یک ماه قبل متفاوته
    چیزایی که اینجا محاسبه شده مربوط می شه به سی روز
    برای یک ماه باید یکمی کد رو تغیر داد
    ----
    فردا می زارمش الان دیرمه!!! Cool
    ۱۳۸۹ تير ۱۴ ۱۱:۲۰ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : molana
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,734
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6196 تشکر در 3438 ارسال )
    ارسال: #10
    RE: مشکل با محاسبه تاریخ
    اگر pdate استفاده مي كنيد از pmktime استفاده كنيد تا يك ماه بعد رو به دست بياريد. چون بعضي از ماها 31 بعضي 30 و اسفند بعضي وقتا 29 و بعضي وقتها 30 هست. توابعي رو كه نوشتم حتما از اونا استفاده كنيد تا خطا نداشته باشين
    ۱۳۸۹ تير ۱۵ ۰۹:۱۶ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : oia
    « قدیمی تر | تازه‌ تر »

  • صفحه‌ها (3):
  • ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS