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

نام تاپیک: الگوریتم تبدیل تاریخ میلادی به شمسی ؟؟؟؟؟؟؟

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

    الگوریتم تبدیل تاریخ میلادی به شمسی ؟؟؟؟؟؟؟

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

    جستجو هم کردم ولی هر چی پیدا کردم غلط بودش . خودم هم یک روز وقت گذاشتم ولی باز هم مشکلاتی داره که با سالهای کبیسه هستش

    کسی میتونه کمک کنه

    در ضمن نمیخواهم محدودیت داشته باشه . میخواهم مثل تاریخ پارسا 99 یا 2003 کار بکنه

    ممنون از همگی

  2. #2
    یه سر به www.PersianComponents.com بزن . یه Pdf داره وخصوص این کار

  3. #3
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313
    قبلا تو همین سایت بحث شده توی گوگل دنبال calmath بگرد یک برنامه با سورس که تابع تبدیل اکثر تقویم ها را به هم دارد

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    دی 1383
    محل زندگی
    تهران
    پست
    94
    نقل قول نوشته شده توسط ProgrammingLove
    یه سر به www.PersianComponents.com بزن . یه Pdf داره وخصوص این کار

    این سایت فکر میکنم آدرسش اشتباه باشه . میشه درستش رو بگین و یا اون PDF رو برام بگزارید
    متشکرم

  5. #5

  6. #6
    نمی دونم این مشکل حل شده یا نه ! اگر حل شده لطفاً به من هم خبر بدید. اگر نشده من با این مشکل دست به گریبانم و یه جورایی دارم به جواب نزدیک می شوم. خوشحال می شوم اگر با کسی تعامل داشته باشم.

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    دی 1383
    محل زندگی
    تهران
    پست
    94

    من جواب سوالم رو پیدا کردم

    با سلام . مشکل من حل شد
    الگوریتمش رو به زبان ویژوال بیسیک میتونی اینجا پیدا کنی
    http://couprie.docspages.com/calmath/index.html
    اگه سوالی داشتی بپرس . من تقریبا اطلاعات خوبی تو این زمینه پیدا کردم
    در ضمن الگوریتمش کاملا علمی هست و 100 ٪ درست کار میکنه
    البته تا جایی که من تست کردم
    موفق باشید

  8. #8
    ممکنه کمی در موردش توضیح بدی ؟
    یک نکته که من متوجه شدم از روش سالگشت 128 تایی برای سالهای کبیسه استفاده می کنه ولی تا جایی که من می دونم در تقویم ایران از روش سالگشت 33 تایی استفاده می شه.
    ممنون می شم.

  9. #9
    کاربر تازه وارد
    تاریخ عضویت
    دی 1383
    محل زندگی
    تهران
    پست
    94
    سلام
    من درست نمیدونم . فقط میدونم که درست داره کار میکنه من برای خیلی از تاریخها چک کردم درست جواب میداد . شاید حق با شما باشه ولی برای من مهم این بود که درست کار کنه که میکنه :wink:

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

  10. #10
    دوست من متاسفانه من بیسیک کار نیستم و فرصت سر و کله زدن با این کد رو هم ندارم. ولی اگر تاریخهای 18 تا 22 مارس سالهای 1990 تا 2005 رو امتحان کنی و به خطایی برخورد نکنی احتمالا درست عمل می کنه.
    و البته یک روز خاص مثلاً روز تولدت و یا اول ژانویه هر سال رو هم بگیر. اول ژانویه همیشه 11 دی ماه است بجز سالهای 1997 ، 2001 ، 2005 و احتمالا 2009 و ... که 12 دی ماه است. در واقع در سالهای 1375، 1379؛1383 و ... روز میلادی با شمسی یک روز اختلاف دارد. این به علت کبیسه نبودن سال 1374 بعد از سال 1370 ( فاصله 4 سال ) است.
    اگر نتیجه را اعلام کنی ممنون می شوم. هر چند که فکر کنم باید روش خودم رو با C ادامه بدم.

  11. #11
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313
    اگر نتیجه را اعلام کنی ممنون می شوم. هر چند که فکر کنم باید روش خودم رو با C ادامه بدم.
    این الگوریتم ها در عین سادگی و راحتی بسیار دقیق و کار آمد هستند

  12. #12
    Linux عزیز من متوجه منظورت نشدم. کدوم الگوریتمها ؟ روشی که در سایت مورد اشاره من و salar_sh (http://couprie.docspages.com/calmath/index.html) بکار رفته بود اصلا ساده و راحت نبود. من هنوز نرسیدم امتحان کنم ببینم درست کار می کنه یا نه ولی درک روش محاسبه اون اصلا ساده نیست. البته یه چیزایی متوجه شدم که تاریخ میلادی رو به عدد روز تبدیل می کنه و بعد عدد روز رو به هر تاریخی که بخواهیم از جمله شمسی می شود تبدیل کرد. مبنای کار هم فکر کنم سال 45 قبل از میلاد باشه.
    من تقریبا به همین روش دارم برنامه خودمو تمام می کنم. و البته مبنای کارم رو گذاشتم سال 1980 به بعد که دقیقا درست کار می کنه. شرمنده ! قبلش به دردم هم نمی خوره ولی با روشی که جلو رفتم فکر کنم که مبنا رو هر چقدر عقب ببریم هم کار کنه. ولی مثلا تقویم هجری شمسی در تاریخ 45 قبل از میلاد یعنی چی ؟

  13. #13
    بازم من یک اشتباه کردم. :sorry: مبنای کار سایت مورد اشاره اگر اشتباه نکنم!!!!! 4713 قبل از میلاد است. حد اقل این رو مطمئنم که بیش از 4000 سال قبل از میلاده !

  14. #14
    کاربر تازه وارد
    تاریخ عضویت
    دی 1383
    محل زندگی
    تهران
    پست
    94
    بسیار خوب . من یه تستی میکنم . من کد رو به به دلفی برگردوندم و البته یه سری توابعی هم که لازم داشتم رو ایجاد کردم . فعلا هم که درست کار میکردش .

    موفق باشی و خداحافظ

  15. #15
    من کد داده شده در اون سایت رو به زبان C تبدیل کردم و امتحان کردم درست عمل می کند. همانطور که قبلاً گفتم فکر می کنم این روش سال کبیسه را بر مبنای سالگشت 128 تایی محاسبه می کند. البته از الگوریتم فوق چیز زیادی سر در نیاوردم و این فقط یک حدس است. اما فکر کنم روشی که در تقویم ایران استفاده میشود 33 تایی است یعنی اگر باقیمانده تقسیم سال بر 33 یکی از اعداد 1،5،9،13،17،22،26،30 باشد آن سال کبیسه است. به هر حال هر دو روش تاریخ فعلی را درست حساب می کند.
    من ترجیح دادم که بر مبنای روش 33 تایی این برنامه را خودم بنویسم. البته اگر قبلاً این برنامه را پیدا می کردم شاید ازش استفاده می کردم اما تقریبا به جواب رسیده بودم که این برنامه رو دیدم. فرمول من هم همانی است که در کد سایت مذکور پیاده شده. یعنی تعداد روزها را تا یک مبدا تاریخی ( من اول ژانویه در نظر گرفتم و سال را آزاد گذاشتم که برنامه نویس خودش تعریف کند اما در روش سایت از 1/1/1 در تقویم Julian به عنوان مبنا استفاده می کنه) محاسبه می کنیم و تاریخ مبدا را به شمسی محاسبه و تاریخ متناظر تعداد روزهای گذشته از آن تاریخ مبنا را به تقویم شمسی بدست می آوریم.
    یک برنامه تستی ساده برای مقایسه این دو روش نوشتم و از سال 1800 میلادی تا 2500 رو مقایسه کردم. در سالهای 1209، 1242، 1403، 1436، 1469، 1502، 1531، 1535، 1564، 1568، 1597، و ... این دو روش در سال کبیسه اختلاف دارند. یعنی مثلاً روش 128 تایی سال 1209 و 1242 را کبیسه می بیند اما روش 33 تایی 1210 و 1243 را. و برای سالهای دیگر بر عکس یعنی 33 تایی اول کبیسه می بیند. البته این اختلاف از 140 سال پیش و تا 20 سال دیگر وجود ندارد و هر دو روش قابل اعتماد است.
    سه فایل JDN.C روش سایت مورد اشاره دوستمون ، Shamsi.c روش من و Compare.C به مقایسه این دو روش می پردازد. ( بابا جمله ادبی :oops: )
    من به شخصه از دومی ( Shamsi.C ) استفاده می کنم. سادگی خوانایی این روش فوق العاده است. یک کمی ابداع خودمه ! تعریف از خود ...

  16. #16
    کاربر تازه وارد
    تاریخ عضویت
    دی 1383
    محل زندگی
    تهران
    پست
    94
    پس به نظر شما مشکلی نداره ؟

    من که تا اینجا ایرادی ندیدم ازش

    موفق باشید

  17. #17
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313
    یه خورده اگر در مورد ذخیره سازی تاریخ در ویندوز مطالعه کنی می بینی که ویندوز هم از این روش استفاده کرده یعنی تبدیل تاریخ به یک عدد ولی مبنای ویندوز 1899/12/30 هست. و تاریخ هم بصورت یک متغیر doublae ذخیره می شود. یعنی تاریخ 1899/12/30 بصورت عدد 0 ذخیره می شه.
    http://www.astro.uni.torun.pl/~kb/Pa...rsianC-EMP.htm
    این صفحه را نگاه کن تا 2099 میلادی لحضه سال تحویل و روز سال تحویل را حساب کرده بعد این روز ها را با برنامه خودت و الگوریتم jdn که نوشتی حساب کن. یه برنامه تبدیل تاریخ هم با فورترن نوشته
    و jdn هم یک چیز من در آوردی نیست و مبدا ان هم که حدود 4000 سال پیش هست دلیل خاص خودش را دارد.

  18. #18
    حالا چرا اینقدر خشن Linux جان؟ من کی گفتم که Jdn یک چیز من در آوردی است ؟ فقط تو پیام چند تا قبل ترم پرسیدم که تاریخ هجری شمسی در 45 سال قبل از میلاد چه معنی می دهد؟ در واقع اگر هم بخواهیم معنی دار فکر کنیم چه فرقی می کند که در آن سال روز 15 مارس!! مثلاً 25 اسفند باشد یا 26 و یا 24 ؟
    چیزی که من در آدرس شما دیدم تحویل سال 1403 ( که بعد از 1900 میلادی اولین سال اختلاف دو روش مورد نظر ماست ) 2025 20 9:01 محاسبه شده ! یعنی 20 مارس 2025 ساعت 9:01 صبح به وقت گرینویچ که به وقت تهران تقریباً می شه 12:30 . فکر می کنم بزرگان گفتنه اند که اگر تحویل سال قبل از ظهر بود روز اول فروردین و اگر بعد از ظهر بود روز آخر اسفند است و ساعت 12:30 نشون دهنده اینه که تحویل سال روز آخر اسفند است. اما 20 مارس 2025 در روش Jdn اول فروردین 1404 و در روش 33 تایی که من استفاده کردم 30 اسفند 1403 است. البته در کد فرترن و نسخه اجرایی آن هم دیدم که از روش سالگشت 33 تایی استفاده کرده است.
    جون من نگو همه را با هم چک کن ! من و Jdn مصالحه کردیم. فقط 20 سال دیگه دعوامون می شه که تا اون موقع کی مرده کی زنده ! من این تبدیل رو برای یک برنامه کامپیوتری می خواهم که تا 20 سال دیگه منطقاً زنده نیست.
    راستی یه سوال دیگه ! مبنای تاریخ ویندوز که در واقع اول سال 1900 است برای تقویم میلادیه یا هجری شمسی هم داره ؟ در واقع اینطوری بهتر است که بگویم آیا ویندوز تقویم هجری شمسی هم حساب می کند یا خیر ؟
    همیشه سرفراز و موفق باشی.

  19. #19
    سلام
    الگوریتمش رو به زبان ویژوال بیسیک میتونی اینجا پیدا کنی
    http://couprie.docspages.com/calmath/index.html
    جل الخالق! مخابرات اینم فیلتر کرده؟!
    اگه امکانش هست کد های سایت فوق را در همین جا بنویسید.

  20. #20

    Unhappy

    دوستان عزیز سلام.
    احتمالاً کسی از شماها هست که فایلهایی رو که من Upload کرده بودم ( Shamsi.c , JDN.C و Compare.C ) رو Download کرده و داشته باشه. من خودم لازمشون دارم ولی کامپیوترم پرید و ندارمشون.

  21. #21
    کاربر دائمی آواتار Mohammad_Mnt
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    جنگلی به نام ایران
    سن
    41
    پست
    1,875
    برای تاریخ هجری خورشیدی :
    اگر باقیمانده تقسیم سال بر 33 یکی از اعداد زیر باشد ، سال کبیسه است :
    1-5-9-13-17-22-26-30

    برای سال میلادی :
    کلیه سال هایی که بر 4 بخش پذیر هستند به جز سال هایی که بر 100 بخش پذیر هستند ولی بر 400 بخش پذیر نیستند ( مثل سال 2100 که کبیسه نیست )

  22. #22

    نقل قول: الگوریتم تبدیل تاریخ میلادی به شمسی ؟؟؟؟؟؟؟

    سلام برنامش اینجاست.
    http://binaryearth.blogfa.com/post-18.aspx

  23. #23

    نقل قول: الگوریتم تبدیل تاریخ میلادی به شمسی ؟؟؟؟؟؟؟

    سورس برنامه رو تو این پست(لینک زیر) گذاشتم. اگه سوالی بود درخدمتم.
    http://binaryearth.blogfa.com/post-25.aspx

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

  1. چرا کاربر جدید نه ؟؟؟؟؟؟؟
    نوشته شده توسط pesarkhobeee در بخش گفتگو با مسئولین سایت، درخواست و پیشنهاد
    پاسخ: 8
    آخرین پست: سه شنبه 02 بهمن 1386, 16:22 عصر
  2. ؟؟؟؟؟؟؟ F1 در برنامه VB.net
    نوشته شده توسط Dania_SHl در بخش VB.NET
    پاسخ: 3
    آخرین پست: یک شنبه 06 آبان 1386, 21:18 عصر
  3. چگونگی لینک به خود صفحه؟؟؟؟؟؟؟
    نوشته شده توسط آزاده آزاده آزاده آزاده در بخش طراحی وب (Web Design)
    پاسخ: 1
    آخرین پست: شنبه 08 مهر 1385, 19:28 عصر
  4. از آقای افشین پور چه خبر؟؟؟؟؟؟؟
    نوشته شده توسط kia1349 در بخش Foxpro
    پاسخ: 3
    آخرین پست: سه شنبه 13 آبان 1382, 03:36 صبح

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

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