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

نام تاپیک: یه باگ در کلاس PersianCalendar میگید چیکار کنم...

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

    یه باگ در کلاس PersianCalendar میگید چیکار کنم...

    سلام....
    با این کلاس به یه مشکل برخوردم اونم اینه که:
    با یه حساب سر انگشتی ساده میشه فهمید که سال 1407 کبیسه است ولی وقتی که میخوام تاریخ 30/12/1407 رو به میلادی تبدیل کنم ایراد میگیره و میگه روز باید بین 1 تا 29 باشه در صورتی که سال 1407 کبیسه است و این تاریخ درسته...
    جالب اینجاست که تا سال 1403 درست جواب میده اما از سال 1407 به بعد دیگه کبیسه ها رو اشتباه میکنه ...
    یعنی 1411 و 1415 و 1419 و الی آخر رو اشتباه میکنه....!!!!
    از اون طرف هم از سال 1371 به قبل یعنی 1367 و 1363 و ... رو اشتباه میکنه ...!!!!
    حالا میگید چیکار کنم....؟؟؟؟؟؟

    Dim Sh AsNew System.Globalization.PersianCalendar
    TextBox1.Text = Sh.ToDateTime(1407, 12, 30, 0, 0, 0, 0, 0)
    آخرین ویرایش به وسیله kablayi : شنبه 31 مرداد 1388 در 10:01 صبح

  2. #2
    کاربر دائمی آواتار Hossis
    تاریخ عضویت
    آبان 1386
    محل زندگی
    بیرجند
    پست
    1,731

    نقل قول: یه باگ در کلاس PersianCalendar میگید چیکار کنم...

    از راه های دیگر تبدیل تاریخ استفاده کن

  3. #3

    نقل قول: یه باگ در کلاس PersianCalendar میگید چیکار کنم...

    من شنیده بودم ، هر چند سال یه مورد استثنا پیش میاد که بجای هر 4 سال ، هر 3 سال کبیسه میشه . ( نمیدونم تا چه حد درسته )

    شما سال 1406 رو آزمایش کن

  4. #4
    کاربر دائمی آواتار Hossis
    تاریخ عضویت
    آبان 1386
    محل زندگی
    بیرجند
    پست
    1,731

    نقل قول: یه باگ در کلاس PersianCalendar میگید چیکار کنم...

    نقل قول نوشته شده توسط sari-1369 مشاهده تاپیک
    من شنیده بودم ، هر چند سال یه مورد استثنا پیش میاد که بجای هر 4 سال ، هر 3 سال کبیسه میشه . ( نمیدونم تا چه حد درسته )

    شما سال 1406 رو آزمایش کن
    منظورت 1406 میلادیه یا شمسی؟؟

  5. #5

    نقل قول: یه باگ در کلاس PersianCalendar میگید چیکار کنم...

    شمسی .

  6. #6
    کاربر دائمی آواتار kablayi
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    شیراز
    پست
    773

    نقل قول: یه باگ در کلاس PersianCalendar میگید چیکار کنم...

    تاریخ شمسی دقیق ترین تاریخه...
    هر 4 سال یه بار سال کبیسه است...
    نمیشه که بگم بعد از فرضا 15 سال از این به بعد سه سال یه بار کبیسه بگیره که؟؟؟؟
    میشه یه تابع تبدیل تاریخ شمسی به میلادی بنویسم ولی میخواستم بدونم راه حل دیگه ای داره یا نه ...؟

  7. #7
    کاربر دائمی آواتار anooshiran
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران anoosh_resha@yahoo.com
    پست
    576

    نقل قول: یه باگ در کلاس PersianCalendar میگید چیکار کنم...

    سلام دوست عزيز
    كامپوننتي را كه من براي اين منظور درست كردم نيز تست كن. فكر مي كنم اين مشكل را نداشته باشه . آدرس آن هم در زير امضاء من هست. اگر استفاده كردي نتيجه را بگو. ممنونم ميشم

  8. #8

    نقل قول: یه باگ در کلاس PersianCalendar میگید چیکار کنم...

    نقل قول نوشته شده توسط kablayi مشاهده تاپیک
    تاریخ شمسی دقیق ترین تاریخه...
    هر 4 سال یه بار سال کبیسه است...
    نمیشه که بگم بعد از فرضا 15 سال از این به بعد سه سال یه بار کبیسه بگیره که؟؟؟؟
    در اینکه تقویم شمسی دقیق ترینه شک نیس.

    فرضا هر 10,000 سال 1 بار 3 سال کبیسه میشه و دوباره 4 سال 4 سال کبیسه میشه تا 10,000 سال بعدی .

    ( گفتم مطمعن نیستم ، ولی منظورم اینی بود که بالا گفتم )

  9. #9
    کاربر دائمی آواتار anooshiran
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران anoosh_resha@yahoo.com
    پست
    576

    نقل قول: یه باگ در کلاس PersianCalendar میگید چیکار کنم...

    سلام دوستان
    در بالا توضيحي داده بودم كه نياز به تصحيح آن مي بينم.

    محاسبه سال كبيسه شمسي:

    برای تشخیص این‌که سال شمسي مورد نظر کبیسه است یا خیر، کافی است که باقی‌ماندهٔ تقسیم سال شمسي را بر عدد ۳۳ بدست آوریم. اگر باقی‌مانده یکی از اعداد( ۱، ۵، ۹، ۱۳، ۱۷، ۲۲، ۲۶ و ۳۰ )باشد، سال شمسي سال کبیسه است.به عنوان مثال سال ۱۳70 را در نظر بگيرید. باقی‌ماندهٔ تقسیم ۱۳70 بر عدد ۳۳ برابر 17 است بنابراین سال ۱۳70، سال کبیسه است.تقريبا در هر 33 سال 8 سال كبيسه و 25 سال معمولي قرار دارد. علت تقسيم بر 33 هم همين مقوله است. بنابراين يكي از سالهاي كبيسه پنج ساله ميشود كه ميتوان آن را شروع دوره 33 ساله جديد در نظر گرفت.

    حال مشكل دوست عزيز آقاي kablayi اين است كه سال 1407 را كبيسه مي انگارد (كه البته بنده هم همينطور فكر مي كردم و همانند ايشان فكر مي كردم كه اين مسئله ناشي از يك باگ است.ولي زود قضاوت كردم و مانند هميشه قضاوت سريع نتيجه قابل قبولي برايم در بر نداشت). در صورتيكه باقي مانده تقسيم 1407 بر 33 عدد 21 است كه در مجموعه اعداد فوق نمي گنجد ولي سال 1408 سال كبيسه است زيرا مانده تقسيم 1408 بر 33 عدد 22 است.يعني سال 1403 كبيسه است و بعد از آن يك دوره كبيسه 5 ساله خواهيم داشت . (اين دوره از سال 1370 شروع گرديده و به سال 1403 ختم مي گردد يعني 33 سال . بنابراين سال كبيسه قبل از 1370 سال 1366 و سال كبيسه بعدي نيز سال 1375بوده است.سال 1371 سال كبيسه نيست.)

    سال 1403 را ميتوان سال پايان دوره 33 ساله قبلي و شروع دوره 33 ساله جديد دانست كه كبيسه بعدي آن 5 ساله خواهد بود و به سال 1436 ختم خواهد شد.

    محاسبه سال كبيسه ميلادي

    برای تشخیص این که سال میلادی مورد نظر کبیسه است، حداقل یکی از شرایط زیر باید برقرار باشد:

    ۱) سال میلادی مورد نظر بر ۴ بخش‌پذیر باشد (باقی‌ماندهٔ تقسیم آن سال بر ۴ برابر ۰ باشد) و بر ۱۰۰ بخش‌پذیر نباشد (باقی‌ماندهٔ تقسیم آن بر ۱۰۰ برابر ۰ نباشد)

    ۲) سال میلادی مورد نظر بر ۴۰۰ بخش‌پذیر باشد

    به عنوان مثال سال ۱۹۰۰ میلادی با این که بر ۴ بخش‌پذیر است سال کبیسه نیست (چون بر ۱۰۰ بخش‌پذیر است). سال ۲۰۰۰ میلادی سال کبیسه است (چون بر ۴۰۰ بخش‌پذیر است). سال ۲۰۰۴ میلادی سال کبیسه است (چون بر ۴ بخش‌پذیر است و بر ۱۰۰ بخش‌پذیر نیست).


    براي توضيحات بيشتر به لينك زير مراجعه كنيد

    http://msdn.microsoft.com/en-us/libr...ncalendar.aspx

    در ضمن براي مقايسه تطبيقي سالها نيز مي توانيد به سايت زير مراجعه كنيد

    http://www.world-news.org/persian/Ca...?Date=19970320

    مجددا بابت توضيحات ناقص قبلي خود از دوستان پوزش مي طلبم.
    آخرین ویرایش به وسیله anooshiran : یک شنبه 01 شهریور 1388 در 04:17 صبح

  10. #10
    کاربر دائمی آواتار kablayi
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    شیراز
    پست
    773

    نقل قول: یه باگ در کلاس PersianCalendar میگید چیکار کنم...

    سلام...
    خیلی عجیبه ...
    من تاحالا فکر میکردم هر چهار سال یه بار سال کبیسه به وجود میاد اما اینطور که معلومه anooshiran درست میگن...
    من تا حالا از اون روش تقسیم بر 4 استفاده میکردم ولی اینطور که معلومه اشتباه بوده...

    ممنون

  11. #11

    نقل قول: یه باگ در کلاس PersianCalendar میگید چیکار کنم...

    دیدین حق با من بود

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

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