PDA

View Full Version : سوال: تاريخ شمسي چگونه ساخته شد؟



اوبالیت به بو
جمعه 26 شهریور 1389, 16:54 عصر
با سلام

من مي خوام يك كلاس روز شمار يا تقويم يا تاريخ بسازم. ولي اين تاريخ من شمسي نيست. چه اصولي رو بايد رعايت كنم؟

كلاس تاريخ شمسي چگونه ساخته شد؟
چي جوري مي تونم اين اصول رو رعايت كنم و معادل اين رو براي يك تاريخ به غير از شمسي بسازم. مثلا مي خوام يك كلاس بسازم براي روز شمار تاريخ يك نژاد يا قوم در چين.

به عنوان نمونه بگه امروز روز چين، ماه چين، سال چين
روز زرتشت، ماه زرتشت، سال زرتشت
روز شمسي، ماه شمسي، سال شمسي

به اين صورت....

salehbagheri
جمعه 26 شهریور 1389, 18:40 عصر
اینها همگی با محاسبات دقیق و بررسی ماهها و سالهای گذشته میسر هست.

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


شما هم باید تاریخ مربوط رو به دقت بررسی کنید. تعداد روزهای ماههای سال رو بشمرید. این عمل رو برای 5 سال متوالی (از روی تقویم) انجام دهید. سپس روز شروع اون سال رو به میلادی به دست بیارید و چک کنید که در آیا در همه سالها در همین روز بوده اند یا خیر ... نخستین روز سال میلادی رو هم چک کنید ببینید که در چه روزی از تاریخ مورد نظر اتفاق می افته ...
تغییراتی که در سالهای کبیسه اتفاق می افته رو بررسی کنید. دقت کنید که سالهای کبیسه الزاماً هر چهارسال یک بار نیستند و ممکنه اختلاف دو سال کبیسه به 5 سال هم برسه ... در ویکی پدیا در مورد Leap Year جستجو کنید و اطلاعات لازم رو بگیرید.

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

به همین راحتی!

golbafan
شنبه 27 شهریور 1389, 19:59 عصر
تقويم فارسي عربي ميلادي

http://xcalendar.sourceforge.net

اپن سورس

مسعود اقدسی فام
جمعه 02 مهر 1389, 18:30 عصر
برای شروع باید یه تاریخ مشخص رو در هر دو فرمت بدونید. مثلا اینکه امروز کدوم روز شمسی و کدوم روز میلادیه.
بعد از اون اگه ترتیب سالهای کبیسه میلادی و شمسی رو بدونید و اینکه کدوم سال میلادی و شمسی کبیسه بوده، به راحتی می تونید هر روزی رو بر اساس اون تاریخ پایه محاسبه کنید.

قانون کبیسه بودن سال شمسی: باقیمانده تقسیم عدد سال به 33 یکی از این اعداد باشه: یک، پنج، نه، سیزده، هفده، بیست و دو، بیست و شش، سی. اگه دقت کنید همه این اعداد به غیر از یه مورد اختلاف چهار سال دارن. مثلا سال 1387 کبیسه بود. باقیمانده تقسیمش بر 33 هم یک می شه.

قانون کبیسه بودن سال میلادی: عدد سال میلادی بر 400 بخشپذیر باشه، یا اینکه بر 4 بخشپذیر باشه و بر 100 بخشپذیر نباشه. به عبارت دیگه سال 2000 کبیسه بود. اما سال 1900 کبیسه نبود. چون بر 4 بخشپذیر هست. اما بر 100 هم بخشپذیر هست که نباید باشه.

در ظاهر ساده به نظر می یاد. اما یه جاهایی باید دقیق باشید. من خودم یه کلاس کامل برای تبدیل شمسی به میلادی و بالعکس نوشتم. اگر با دات نت کار می کنید که خود دات نت کلاسهایی برای تبدیل داره.

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

در ضمن سال کبیسه شمسی اسفندماه (ماه آخر) از 29 روز به 30 روز تبدیل می شه و در سال میلادی ماه فوریه (ماه دوم) از 28 روز به 29 روز تبدیل می شه. وجه مشترک این دو اینه که آخرین ماهی هستن که به طور کامل در فصل زمستان نیمکره شمالی زمین قرار دارن.

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