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

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

تقویم میلادی 

تقویم میلادی و گاهشمار میلادی تقویم است با ریشه مسیحی که ابتدایی تاریخ آن میلاد حضرت مسیح میباشد.  این تقویم در ۹۵ درصد کشورهای جهان استفاده میشود. چون این تقویم به وسیله پاپ گریگوری سیزدهم تصویب شده به آن تقویم گریگوری نیز می‌گویند. کشورهای ایران افغانستان اتیوپی تنها کشورهایی هستند که در آن تقویم‌میلادی تقویم رسمی کشور نیست. 

برای تبدیل تاریخ میلادی به تاریخ شمسی بایستی در ابتدا با ماههای  تقویم میلادی آشنا  شویم.   در جدول زیر ماه‌های تقویم میلادی به همراه نام آن ها در زبان فرانسوی انگلیسی و روسی آورده شده است. 

شمارهنام فرانسویاملای فرانسوینام انگلیسیاملای انگلیسینام روسیاملای روسیشمار روز
۱ژانویهJanvierجَنیوئریJanuaryیَنوَرянвар۳۱
۲فوریهFévrierفِبریوئریFebruaryفیروْرَلфеврал۲۸ یا ۲۹
۳مارسMarsمارچMarchمَرتмарт۳۱
۴آوریلAvrilاِیپریل (آپریل)Aprilاَپریلапрел۳۰
۵مهMaiمِیMayمَیмай۳۱
۶ژوئنJuinجون (جوئن)Juneاییُنиюн۳۰
۷ژوئیهJuilletجولایJulyاییُلиюл۳۱
۸اوتAoûtآگِست یا آگوستAugustاَوْگُستавгуст۳۱
۹سپتامبرSeptembreسِپتِمبِرSeptemberسینتْیَبرсентябр۳۰
۱۰اکتبرOctobreآکتُبِر یا اُکتُبِرOctoberاوکتیَبرоктябр۳۱
۱۱نوامبرNovembreنُوِمبِرNovemberنویَبرноябр۳۰
۱۲دسامبرDécembreدِسِمبِرDecemberدیکَبرдекабр۳۱

تقویم هجری شمسی 

این تقویم برپایی تقویم جلالی با مبدا هجری است. این مبدا در واقع سال ۶۲۲  میلادی می باشد.  تاریخ هجرت پیامبر روز دوشنبه اول ربیع الاول مطابق با بیست و چهارم شهریور می باشد. این تاریخ برابر با ۱۶ سپتامبر سال ۶۲۲ در تقویم گریگوری  است. سرآغاز تقویم  شمسی روز جمعه که یک فروردین سال ۱ هجری مطابق با ۲۹ شعبان یک سال پیش از هجرت و برابر با ۲۲ مارس سال ۶۲۲ میلادی می باشد. این تاریخ ۵ ماه و ۲۴ روز قبل از هجرت پیامبر است. نام روزها تعداد آن ها و دیگر اطلاعات مربوط به تقویم جلالی در جدول زیر آمده است.

ترتیبروزهانام نام دیگرتاریخ میلادی
۱۳۱فروردینحَمَل۲۱ مارس – ۲۰ آوریل
۲۳۱اردیبهشتثَور۲۱ آوریل – ۲۱ مه
۳۳۱خردادجَوزا۲۲ مه – ۲۱ ژوئن
۴۳۱تیرسَرَطان۲۲ ژوئن – ۲۲ ژوئیه
۵۳۱مرداداَسَد۲۳ ژوئیه – ۲۲ اوت
۶۳۱شهریورسُنبُله۲۳ اوت – ۲۲ سپتامبر
۷۳۰مهرمیزان۲۳ سپتامبر – ۲۲ اکتبر
۸۳۰آبانعَقرَب۲۳ اکتبر – ۲۱ نوامبر
۹۳۰آذرقَوس۲۲ نوامبر – ۲۱ دسامبر
۱۰۳۰دیجَدْی۲۲ دسامبر – ۲۰ ژانویه
۱۱۳۰بهمندَلو۲۱ ژانویه – ۱۹ فوریه
۱۲۲۹–۳۰اسفندحوت۲۰ فوریه – ۲۰ مارس

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

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

۱-  از ماه میلادی سه تا کم می کنیم تا ماه شمسی به دست آید.

 ۲-  عدد ماه میلادی را به روز میلادی اضافه میکنیم.  در این حالت روز شمسی به دست می آید.

عدد ماه میلادی به همراه تعداد روزهای آن در جدول زیر آمده است:

  ژانویه    فوریه  مارسآپریلمیجونجولایاوتسپتامبراکتبرنوامبردسامبر
شماره ماه۱۲۳۴۵۶۷۸۹۱۰۱۱۱۲
عدد ماه۱۰۱۱۹۱۱۱۰۱۰۹۹۹۸۹۹
تعداد روزهای ماه۳۱۲۸۳۱۳۰۳۱۳۰۳۱۳۱۳۰۳۱۳۰۳۱

مثلاً برای تبدیل روز ۲۰ اکتبر به معادل شمسی آن داریم:

۲۰ اکتبر معادل ۱۰/۲۰ است.  اگر ماه میلادی سه ماه کم کنیم.  ماه شمسی به دست می‌آید که ماه هفتم است یا همان مهر. حال عدد ماه میلادی را به روز میلادی اضافه میکنیم.  عدد ماه اکتبر هشت است و بنابراین تبدیل تاریخ روز بیست و هشتم مهر ماه را به ما نتیجه می دهد.  اگر بخواهیم  مثلاً تاریخ ۲۸ اکتبر را به شمسی تبدیل کنیم باز از همین روش می‌توان استفاده کرد.  در این حالت ماه شمسی مهرماه بدست می آید و با اضافه کردن ۸ روز به روز میلادی روز ماه به دست که سی و ششم است.  است چون ماه مهر ۳۰ روز است است بنابراین این حاصل ششم آبان ماه خواهد شد.

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

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

 ۱-  سه ماه به ماه شمسی اضافه می کنیم.

 ۲-  عدد ماه میلادی را از روز شمسی کم میکنیم.  در این حالت باید توجه داشته باشیم که اطلاع از تعداد روز های ماه میلادی به دست آمده مهم است.

 است مثلا اگر بخواهیم تاریخ ششم آبان ماه را به میلادی تبدیل کنیم  ابتدا باید سه ماه به ماه شمسی اضافه کنیم.  در این حالت ماه  یازده انتخاب می شود.  حال باید عدد ماه میلادی را از روز شمسی کم کنیم.  عدد ماه یازدهم ۹ است. اگر این عدد را از روز ششم کم کنیم عدد منفی سه به دست می آید. یعنی از ماه یازدهم سه روز باید به عقب برگشت.  ماه دهم سی و یک روز دارد که اگر سه روز به عقب برگردیم تاریخ ۲۸ اکتبر به دست  می آید.

کد مربوط به برنامه تبدیل تاریخ میلادی به شمسی سی برای میکروکنترلر avr در نرم افزار کدویژن در زیر آورده شده است. در کد زیر تبدیل سال و محاسبه سال کبیسه نیز منظور گردیده است.

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.