آموزش تبدیل تاریخ میلادی به شمسی- آموزش برنامه نویسی جاوا

آموزش تبدیل تاریخ میلادی به شمسی- آموزش برنامه نویسی جاوا

امروز قصد دارم آموزش تبدیل تاریخ میلادی به شمسی را آموزش بدهم و کد سورس جاوای آن را در اختیار شما دوستان قرار دهم .

اولین کاری که انجام می دهیم این است که تشخیص دهیم سال میلادی ،کبیسه است یا خیر.( که آموزش آن را قبلاً روی سایت گذاشته ام ) اگر کبیسه بود ماه دوم میلادی ( فوریه ) را ۲۹ روزه وگرنه ۲۸ روزه در نظر می گیریم .

بعد از تشخیص کبیسه بودن ، تاریخ میلادی را به تعداد روزهای سپری شده از مبدأ تبدیل می کنیم .

برای این کار ، از سال یک واحد کم می کنیم و در ۳۶۵ ضرب میکنیم و از ماه یک واحد کم می کنیم و طبق جدول زیر تعداد روزهای ماه هایمان را حساب می کنیم و همه را با هم جمع میکنیم .

تعداد روزهای سپری شده از تاریخ میلادی : A

سال میلادی : sal

ماه میلادی :mah

روز میلادی : roz
A = ((sal-1)*365) + (تبدیل مقدار ماه به روز طبق جدول زیر) + roz

ژانویه             ۳۱ روز

فوریه             ۲۸ یا۲۹ روز

مارس            ۳۱ روز

آوریل             ۳۰ روز

مه               ۳۱ روز

ژوئن             ۳۰ روز

ژوئیه            ۳۱ روز

اوت             ۳۱ روز

سپتامبر        ۳۰ روز

اکتبر            ۳۱ روز

نوامبر            ۳۰ روز

دسامبر         ۳۱ روز

مثلاً تاریخ ۳۱/۶/۲۰۰۸ را در نظر بگیرید . خوب این سال کبیسه می باشد و شما فوریه را ۲۹ روزه باید در نظر بگیرید . طبق الگوریتم :

(۲۰۰۸-۱)*۳۶۵ = ۷۳۲۵۵۵

۳۱+۲۹+۳۱+۳۰+۳۱=۱۵۲

۷۵۸۱۰۵+۱۵۲+۳۱ = ۷۳۲۷۳۸

از عدد بدست آمده ، ۲۲۶۷۴۴ را کم می کنیم ( اختلاف روزهای بین تقویم میلادی و شمسی- برای بدست آوردن این عدد دو تاریخ میلادی و شمسی ای را که می دانیم به تعداد روزهای سپری شده از مبدأ تبدیل می کنیم و سپس از هم کم می کنیم ) .

عدد حاصله ، تعداد روز های سپری شده از تاریخ مبدأ در تقویم شمسی می باشد ( تاریخ شمسی را بدست آوردیم ) . حال کافی است که این عدد را به تاریخ تبدیل کنیم ( برعکس کار بالا)

برای تبدیل ، عدد را بر ۳۶۵ تقسیم می کنیم و از آن جزء صحیح می گیریم .سال شمسی بدست آمد . حال برای بدست آوردن ماه ،سال بدست آمده را در ۳۶۵ ضرب میکنیم و از تعداد روزهای مبدأ کم می کنیم تا تعداد روز های سپری شده از آغاز سال را بدست می آوریم .

در مثال بالا :

تعداد روزهای سپری شده از مبدأ شمسی : A

سال شمسی : sal

ماه شمسی : mah

روز شمسی : roz

A = 758288 – ۲۲۶۷۴۴ = ۵۰۵۹۹۴

Sal = [505994/365] =1386

۱۳۸۶*۳۶۵=۵۰۵۸۹۰

۵۰۵۹۹۴-۵۰۵۸۹۰ = ۱۰۴

تعداد روزهای سپری شده از اول سال شمسی= ۱۰۴

 

حالا از اولین ماه شمسی شروع می کنیم به جمع کردن مقدار ماه های سال ، این کار را انقدر ادامه می دهیم تا جمع آن کمتر از تعداد روزهای سپری شده از اول سال شمسی شود . ( به مثال توجه کنید)

۳۱ = ۳۱

۳۱+۳۱ =۶۲

۳۱ + ۳۱ + ۳۱ = ۹۳

۱۰۴-۹۳=۱۱ روز شمسی

در مثال بالا تعداد ماه های ۳ می شود ( ۳۱ را سه جمع کردیم)

حالا عدد سال و ماه بدست آمده را یک واحد اضافه می کنیم ( تاریخ شمسی بدست آمد) :

۱۳۸۷/۴/۱۱

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