نمایش نتایج 1 تا 9 از 9

نام تاپیک: درخواست تابع

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آبان 1397
    محل زندگی
    شیراز
    پست
    318

    درخواست تابع

    با سلام و احترام
    خدمت دوستان و اساتید محترم
    می خواستم بدونم تابعی وجود دارد که یک عدد را به مقدار ماه یک تاریخ شمسی اضافه کند ؟ به طور مثال اگر عدد 2 را به تاریخ 1401/02/01 اضافه کنیم نتیجه آن 1401/04/01 شود و یا اگر عدد 3 را به تاریخ 1400/12/01 اضافه کنیم نتیجه آن 1401/03/01 شود .

    ممنون

  2. #2
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: درخواست تابع

    سلام و روز خوش
    این دست توابع رو باید در همون ماژولی که برای تاریخ خورشیدی استفاده کردین پیدا کنین،
    ولی چون سال های کبیسه تاثیری در این محاسبه نداره و الگوریتم ساده ای هم داره، خودتون هم میتونین جداگانه بنویسین.

    با فرض منطقی که تاریخ از نوع LONG و به فرمت YYYYMMDD باشه، تابع شما چیزی شبیه کد زیر میشه:

    FUNCTION PDate_AddMonth(PDate AS LONG , Months AS LONG) AS LONG
    DIM YYYY , MM , DD AS LONG
    DD= PDate MOD 100
    YYYY= PDate\10000
    MM= (PDate\100) MOD 100
    YYYY= YYYY + Months\12
    MM= MM + Months MOD 12
    IF MM > 12 THEN
    MM= MM MOD 12
    YYYY= YYYY + 1
    ELSEIF MM < 1 THEN
    MM= 12 + MM
    YYYY= YYYY - 1
    END IF
    PDate_AddMonth= YYYY*10000 + MM*100 + DD
    END FUNCTION


    این تابع باید بازای مقادیر منفی Months هم کار کنه، در هر صورت اول اون رو بازای همه حالتها چک کنین چون خودم تست نکردم!

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آبان 1397
    محل زندگی
    شیراز
    پست
    318

    نقل قول: درخواست تابع

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

  4. #4
    کاربر دائمی
    تاریخ عضویت
    آبان 1397
    محل زندگی
    شیراز
    پست
    318

    نقل قول: درخواست تابع

    تابع DateAdd فاصله زمانی مشخص را به تاریخ اضافه می کند و یک Variant (Date) را برمی گرداند.

    قالب: DateAdd (فاصله ، شماره ، تاریخ)

    استدلال:
    فاصله
    اجباری
    نوع: عبارت رشته
    بازه زمانی که می خواهید اضافه کنید
    Setting Description
    Yyyy Year
    Q Quarter
    M Month
    Y Day of year
    D Day
    W Weekday
    Ww Week
    H Hour
    N Minute
    S Second

    عدد
    اجباری
    نوع: عددی
    تعداد فواصل زمانی که می خواهید اضافه کنید

    تاریخ
    اجباری
    نوع: تاریخ
    تاریخی که در آن فاصله اضافه می شود

  5. #5
    کاربر دائمی
    تاریخ عضویت
    آبان 1397
    محل زندگی
    شیراز
    پست
    318

    نقل قول: درخواست تابع

    Function FnDateAdd()
    Dim strDate
    strDate = CDate("June 24, 2013")
    strNewDate = DateAdd("m", 2, strDate)
    MsgBox strNewDate
    strNewDate2 = DateAdd("yyyy", -3, strDate)
    MsgBox strNewDate2
    strDate2 = CDate("June 24, 2013 12:00:00 PM")
    MsgBox DateAdd("h", 2, DateAdd("n", 23, strDate2))
    End Function

  6. #6
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: درخواست تابع

    جناب بهبودی!
    این که دیگه پرسش خودتون هست و نمیشه گفت دقت نکردین (مگر این که پرسش کس دیگه ای باشه که شما اینجا کپی کرده باشین)

    شما مشخصا نوشتین "تاریخ شمسی" ،
    این تابع dateadd رو هم که آوردین هر مبتدی میدونه برای تاریخ میلادی هست و نه شمسی، احتمالا شما تازه با این آشنا شدین.
    ارتباطش به پرسش اولیه چی هست لابد خودتون میدونین.

  7. #7
    کاربر دائمی
    تاریخ عضویت
    آبان 1397
    محل زندگی
    شیراز
    پست
    318

    نقل قول: درخواست تابع

    با سلام و احترام
    ممنون از راهنمائی استاد گرامی جناب مازولق
    جهت استحضار تابع dateadd با تاریخ های هجری شمسی نیز کار می کند و من در حال استفاده از آن می باشم

  8. #8
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: درخواست تابع

    سلام دوباره

    این تابع فقط برای تاریخ میلادی هست و نه خورشیدی - اگر اینجور بود شاید اصلا نیاز به ساخت 99% تاپیکهای مربوط به تاریخ خورشیدی در این انجمن نبود.
    شما فقط از حالتهای خاصی استفاده کردین که در اونها روش محاسبه عملیات تاریخ خورشیدی و میلادی یکی بوده،
    که همین اضافه کردن ماه یا سال هست و حتی برای همین حالت خاص هم مجبورین اول تاریخ خودتون رو تغییر شکل بدین.

    برای اینکه کاملا متوجه بشین:
    با استفاده از همین تابع یک روز به 29 اردیبهشت 1401 اضافه کنین!
    یا 24 ساعت به 31 تیر هر سالی!

  9. #9
    کاربر دائمی
    تاریخ عضویت
    آبان 1397
    محل زندگی
    شیراز
    پست
    318

    نقل قول: درخواست تابع

    با سلام و احترام
    جناب استاد مازولق
    کاملا حق با جنابعالی می باشد و من ممنون از راهنمائی شما هستم
    ولی درخصوص موضوعی که من مطرح کردم ، تابع dateadd مشکل من را حل کرد چون من فقط می خواستم مقدار معینی را به میزان ماه هر تاریخ اضافه کنم .

تاپیک های مشابه

  1. پاسخ: 13
    آخرین پست: دوشنبه 12 آبان 1399, 13:00 عصر
  2. پاسخ: 1
    آخرین پست: یک شنبه 06 فروردین 1396, 09:01 صبح
  3. پاسخ: 2
    آخرین پست: جمعه 31 مرداد 1393, 10:12 صبح
  4. سوال: ساخت چند یوزر پس برای هاست و محدود کردن هاست برای نویسندگان هاست.
    نوشته شده توسط rezanic در بخش توسعه وب (Web Development)
    پاسخ: 0
    آخرین پست: شنبه 04 مرداد 1393, 21:07 عصر
  5. پاسخ: 7
    آخرین پست: سه شنبه 28 آذر 1391, 13:48 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •