گاه‌شماری هجری خورشیدی: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
خنثی‌سازی ویرایش 24261168 توسط 5.119.51.41 (بحث)
برچسب: خنثی‌سازی
الگوریتمی برای تبدیل تاریخ میلادی به شمسی
خط ۶۹:
نوروز هجری خورشیدی در ۸۱درصد با ۲۱ مارس میلادی و ۱۲درصد با روز میلادی بعد و ۷درصد با روز میلادی قبل آن مطابق است. نسبت طولی این تطبیق تا ۹ اسفند یکسان است. پس از آن بعلت گسست کبیسه میلادی بیشترین تطبیق یکروز هجری خورشیدی با یکروز میلادی ۷۶درصد، ۲۲درصد با روز قبل و ۲درصد با روز میلادی بعد آن است. روز کبیسه اسفند ۶۰درصد با بیست مارس و ۴۰درصد با روز میلادی پس از آن مطابق است. در سالهای متفاوت یک قرن هر روز هجری خورشیدی با سه روز متفاوت میلادی و استثنائاً روزهای نه و ده اسفند با چهار روز متفاوت میلادی و کبیسه اسفندماه با دو روز متفاوت میلادی هماهنگ می‌شوند.
 
== '''تبدیل تاریخ میلادی به شمسی''' ==
تبديل تاريخ ميلادی (mm- dd- yyyy) به شمسی بسيار راحت تر از تبديل تاريخ شمسي به ميلادي است. براي نوشتن اين الگوريتم به اختلاف روزهای ميان اولين روز سال ميلادی و اولين روز سال شمسی نيازمندیم. اين اختلاف روز ( چه سال میلادی کبيسه باشد، چه نباشد) "79" روز است.
 
در تاریخ میلادی داده شده، مشخص می کنيم چند روز از سال سپری شده است. تعداد روزهای هر ماه میلادی مطابق آرایه زیر می باشد. در سال کبیسه میلادی، ماه دوم (فوریه) 29 روز دارد:
 
Days of month array = (31, 28 [29], 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
 
براي تشخيص کبيسه بودن يا نبودن سال میلادی از روش زير استفاده می کنيم:
 
اگر سال بر100و 400 بخشپذير باشد يا بر 100 بخشپذير نباشد و بر 4 بخشپذير باشد آن گاه سال کبيسه است، در غير اين صورت سال کبيسه نيست.
 
اکنون سه حالت پيش مي آيد:
 
1.       تعداد روزهای سپری شده سال بزرگتر مساوی 79 و کوچکتر مساوی 186 است:
 
يعنی در 6 ماه اول سال شمسی قرار داري؛ زیرا 6 ماه اول در سال شمسي 31 روزه است (6*31=186) و اگر تعداد روزهای سپری شده بیشتر از  79 باشد وارد فروردین شده ایم.
 
اکنون تعداد روزها را بر "31" تقسيم مي کنيم اگر باقيمانده اين تقسيم صفر شود خارج قسمت تقسيم برابر با ماه شمسی شده و روز شمسی برابر با 31 می شود. اگر باقيمانده صفر نشود ماه شمسی برابر با خارج قسمت باضافه يک شده و روز شمسی همان باقيمانده است.
 
2.      تعداد روزهای سپری شده سال بیشتر از 186 است:
 
"186" روز از تعداد روزها کم کرده و آن را بر 30 تقسيم می کنيم. اگر باقيمانده اين تقسيم صفر شود خارج قسمت تقسيم به اضافه 6 ماه شمسی شده و روز شمسی برابر با30 می گردد. اگر باقيمانده صفر نشود ماه شمسی برابر با خارج قسمت به اضافه 7 شده و روز شمسی همان باقيمانده است.
 
در هر دو حالت 1 و 2 سال شمسی از تفاضل سال ميلادی با 621 بدست می آيد.
 
3.      تعداد روزهای سپری شده سال کمتر از 79 است:
 
در روزهايی بين اولين روز سال ميلادی تا اولين روز سال شمسی (ماههای دی، بهمن و اسفند) قرار داريم.
 
در سال کبیسه میلادی، تحویل سال بعدی 12 دی ماه رخ می دهد ولی در سال های میلادی دیگر 11 دی ماه تحویل سال رخ می دهد. در این الگوریتم باید اختلاف تعداد روزهای بین اولين روز سال ميلادی قبل از سال داده شده و اولين روز دی ماه در سال شمسی را بدانیم؛ برای سال کبيسه میلادی 11 و براي سال میلادی غير کبيسه 10 است.
 
<nowiki>***</nowiki>دقت کنيد در اين قسمت برای مشخص کردن اين اختلاف کبیسه بودن سال میلادی قبل از  سال داده شده را بررسی می نماییم زيرا سال قبل بر روی اولين روز سال ميلادی در دی ماه تاثير می گذارد***
 
به بیان ساده تر، از سال میلادی داده شده یک سال کم کرده و تعیین می کنیم کبیسه است یا خیر. سپس با توجه به آن، اختلاف را تعیین کرده و با تعداد روز سپری شده جمع و بر30 تقسيم می کنيم (3 ماه آخر سال شمسي 30 روزه است.)
 
اگر باقيمانده اين تقسيم صفر شود خارج قسمت تقسيم به اضافه 9 برابر ماه شمسی شده و روز شمسی برابر با 30 می گردد. اگر باقيمانده صفر نشود ماه شمسی برابر با خارج قسمت  به اضافه 10 شده و روز شمسی همان باقيمانده است.
در اين حالت سال شمسی از تفاضل سال ميلادی با 622 بدست می آيد (زيرا در سال قبل قرار داريم.)
== جستارهای وابسته ==
* [[گاه‌شماری جلالی]]