تبدیل تاریخ میلادی به شمسی-نسخه ۲
بسیاری از دوستان که در برنامه نویسی های ان ها تاریخ میلادی هست به دنبال کدی میگردند تا بشود به صورت اتوماتیک تاریخ میلادی را به شمسی تبدیل کند هم چنین که در این کد سال کبیسه نیز حساب بشود(توجه : در کد قبلی سایت یک مشکلی وجود داشت که در محاسبات بعد از بار اول مشکل پیش می امد که در این نسخه رفع شده است)
امروز کد تبدیل تاریخ میلادی به شمسی را به زبان بیسیک را برای دوستان برنامه نویس ،را قرار داده ام. این کد کاملا عملی میباشد وتست شده است
یکی از کاربرد های این کد که خودم هم مدت زیادی با ان سروکار داشتم در مورد کار با ای سی ds1307 هست همانطور که میدانید این ای سی یکreal time clock= RTC هست که علاوه برا کار های دیگر مثل شمارش ساعت ، روز و… تاریخ را به صورت میلادی محاسبه میکند که با استفاده از این کد میتوانید تاریخ را به شمسی تبدیل کنید.
اما در مورد نحوه استفاده از کد باید سال ،ماه و روز میلادی خود را همانطور که در برنامه توضیح داده شده است در متغیر های زیر قرار دهید.
Myear = 2008
Mday =28
Mmonth = 8
که در این کد تاریخ ۲۰۰۸/۰۸/۲۸ را به عنوان نمونه قرار دادیم خروجی این کد که در ان تاریخ به صورت شمسی تولید میشود به صورت زیر میباشد که در این مثال تاریخ ۱۳۸۷/۰۶/۰۷ میباشد.
در کد زیر متغیر Jday به عنوان خروجی روز تبدیل شده میباشد که میتوانید از این متغیر روز تاریخ شمسی تبدیل شده را بگیرید،خروجی ماه در این کد متغیر Jmonth و متغیر Jyear به عنوان خروجی سال شمسی میباشد هم چنین که متغیر Jdayofyear تعداد روز های سپری شده از ماه شمسی محاسبه شده از اول سال تا کنون را نمایش میدهد.جهت دانلود کد بر روی عکس زیر کلیک نمائید
جهت دانلود فایل کد بیسیک تبدیل تاریخ میلادی به شمسی بر روی عکس زیر کلیک نمائید.

دفعات دانلود 229
بحث وگفتگو در مورد این مطلب در انجمن سایت





با سلام و تشکر زیاد
من پروژه پایان دوره کاردانی ام نمایش ساعت و تاریخ شمسی به صورت متحرک بر روی دات ماتریکس هست.توی این چند روز از سایت خوبتون کلی چیزی یاد گرفتم.حالا راجع به این برنامه چند سوال دارم یکی اینکه آیا این برنامه متحرکه؟و یکی دیگه اینکه آیا شما شماتیکی مناسب برای این سراغ دارید؟چون من نمی دونم شماتیکی که من دارم با این برنامه سازگاره یا نه.فقط من عجله دارم.با تشکر
طیبی
با سلام
در مورد سوالتون شما منظور از متحرک چیست ؟ مثلا ساعت از سمت چپ وارد صفحه بشه وبعد خارج بشه ? و بعدش تاریخ و…
در مورد شماتیک برنامه شما ، براحتی میشه در برنامه تغییرات ایجاد کرد و طبق شماتیک پیاده کرد یا این که اگه خواستیم خودمون یه مدار و نقشه جدید طراحی کنیم.
در ضمن ویزگی پروژه تون را در تالار گفتمان مطرح کنید تا راحتر بتوان پاسخ داد و برنامه را دنبال کرد .با تشکر
آیا در pic هم از این روش می توان استفاده کرد .
باتشکر.
سلام
من یه مشکل دارم. زمانی که این کد رو توی یه حلقه قرار میدم و متغیر های روز و ماه و سال شمسی رو روی lcd نمایش میدم روز و ماه شروع به شمردن میکنن و کد بلا استفاده میشه. لطفا کمکم کنید
ضمنا من از میکرو atmega 8 استفاده میکنم.نیاز به کمک فوری دارم. با تشکر.
مساله با صفر کردن متغیرها حل شد.اما یه مساله مهم.!!! من کد تبدیل شمسی به میلادی رو هم لازم دارم آخه من تو پروژه ام برای تنظیم تاریخ و ساعت از کیپد استفاده میکنم و از ds1307.بعد از دادن تاریخ شمسی با کیپد که اونم روی lcd باید نشون داده بشه همونطور که میدونید این تغییرات باید به ds1307 ارسال بشه که اونم باید به میلادی باشه.
والا سعی کردم کد بالا رو تحلیل کنم و خودم کدی رو که میخوامو بنویسم اما تا حالا نتونستم.اگه کسی میتونه به من کمک کنه ممنون میشم آخه خیلی گیرم!pleas help me
سلام یک راه راحت ریختن کد های به صورت شمسی در ds میباشد (امکانش هست) و بعد در هنگام خواندن کد ها را بابت تاریخ و ماه روز چک کنید .
سلام
از راهنمایی تون ممنون ولی من متوجه نشدم میشه بیشتر توضیح بدین.
برای اینکه حالت شمارشی در روز و ماه ایجاد نشه این متغیر رو صفر کنید Mdayofyear=0
برنامه ای برای تبدیل شمسی به میلادی ندارین یا راهنمایی کنید
با سلام این برنامه پیشنهادی شما برای تمام روزهای ماه و سالهای متفاوت کاربرد نداره مثلا شما اگر تاریخ روز میلادی را ۱۹ درنظربگیرید و تاریخ ماه میلادی را ۷ و سال میلادی را ۲۰۱۰ تاریخ جلالی دریافتی شما ۱۰/۴/۱۳۸۹ خواهد بود درصورتی که باید ۲۸/۴/۱۳۸۹ باشه تست کنید اگر اشتباه در عملکرد من هستش ممنون میشم به من بگید
سلام مجدد مشکل حل شد ظاهرا $lib “mcsbyteint.lbx” در برنامه من تعریف نشده بود
. ممنون
با سلام
من دو خواهش از فرد آشنا با آی سی ۱۳۰۷ دارم
یکم – برای تنظیم آی سی باید تاریخ میلادی را وارد نمود. آیا برنامه تبدیل تاریخ جلالی به میلادی را هم نوشته اید؟ در صورت مثبت بودن پاسخ ، خواهشمندم آنرا هم در اختیار من قرار دهید.
دوم – یکی از پایه های آی سی ۱۳۰۷ ، خروجی ای است که فرکانس آنرا می توان با تنظیم بیتها مشخص کرد. من علاقند به دریافت پالس یک ثانیه ای بودم ولی موفق به تنظیم این رجیستر نشدم. راهنمایی و در صورت امکان ، کد بیسیک را ارائه فرمایید.
سلام
شما از کد تبدیل نسخه۲ استفاده میکنید؟
من دقیقا طبق تاریخ خواستی شما عمل کردم
و برنامه تاریخ ۱۳۸۹/۴/۲۸ را برای من نشان داد و مشکلی از نظرکد نیست
یاعلی
سلام شما در اینجا گفتید که این کد سال های کبیسه رو محاسبه میکنه
حالا اگر برای ایسی ds1307 که خود این ایسی سال کبیسه رو تشخیص میده از این کد برای تبدیل تاریخ در برنامه استفاده کنیم مشکلی پیش نمی اید
چون هم ایسی و هم کد تبدیل تاریخ هر دو برای سال کبیسه برنامه ریزی شدن
سلام
نه مشکلی پیش نمی یاد من تست کردم و مشکلی نبود
در هنگام تبدیل تاریخ باید چک شود که سال کبیسه هست یا نه تا در روز ماه اخر سال ، محاسبات لازم را انجام بده که در این کد انجام میگیره
یاعلی