مشاهده نسخه کامل
: سوال مورد برنامه نویسی
من یه سوال داشتم که استادمون ازم جواب میخوا برای فردا میخوام از دوستان استاد کمک میخوام
سوال:با استفاده از تابع DataDiff تاریخ میلادی را به شمسی تبدیل کنید؟
پیشاپیش از همه ی دوستان ممنون:11::40:
سلام
با استفاده از تابع DataDiff تاریخ میلادی را به شمسی تبدیل کنید؟
برای تبدیل صحیح بین شمسی و میلادی شما باید کبیسه های 4 و 5 ساله را لحاظ کنید و این هم ربطی به DateDiff ندارد.
دو الگوریتم مرسوم و نقل شده برای تقویم جلالی وجود دارد ...
الگوریتمی که بیشتر در اینترنت شهرت دارد و ساده تر هم است، مبتنی بر دوره های 33 ساله وقوع کبیسه 5 ساله است.
باید تاریخ میلادی را به تعداد روز گذشته از اول میلاد حضرت مسیح تبدیل کنید و سپس از اختلاف شروع میلادی و شمسی کم کنید در نهایت 365*33+8 برای هر 33 سال شمسی کم کنید و مابقی کمتر از 33 را با توجه به کبیسه های 4 ساله کم کنید تا تعداد سال به دست آید و خرده زیر 365 را هم به ماه و روز تبدیل کنید.
در الگوریتم تشریحی فوق تنها جایی که میتوانید از DateDiff استفاده کنید، و این استفاده منطقی و صحیح هم باشد، انجا است که برای تبدیل تاریخه میلادی به تعداد روز گذشته از اول میلادی (یا هر سال مبنای مشخصی) از DateDif استفاده کنید.
یعنی تاریخ میلادی جاری را منهای تاریخ میلادی مبنا کنید و خروجی را به تعداد روز بگیرید.
=====
(برای شمسی به میلادی هم عکس همین مطلب.)
این روش ها و الگوریتم های این تیپی و شمابه چیزی که در فوق گفتم، تنها راه پیاده سازی تبدیل تاریخ است که همیشه و در همه سال کار کند.
=====
(
اگر جستجو کنید، افراد کم اطلاع کدهای زیادی برای تبدیل تاریخ نوشته اند که داخلش کلی If با اعداد 20 و 21 و.. دارد و مدام روز را مقایسه کرده اند.
این کد تبدیل بدون شک و تردید، صحیح کار نمیکند و فوقش در یک بازه 4 ساله صحیح کار میکند و دیگر طرف خیلی کار کرده باشد، کدذش در یک بازه 33 ساله صحیح کار خواهد کرد.
و چون فرد مذکور اطلاع کاملی نداشته و نمیتواند صحت کارکرد الگوریتمش را برای 4 سال یا 34 سال قبل یا بعد چک کنید، متوجه نمیشود کدش ایراد دارد.
گروهی دیگر از افراد هم بدتر از گروه قبل می آیند و تاریخه شمسی را یکراست در متغییر های میلادی میریزند و گمان میکنند مشکل حل میشود و اصلاً توجه ندارند که تعداد روزهای در ماه برای شمسی و میلادی متفاوت و مثلاً ماه دوم میلادی ها 28 و 29 روز است در حالی که ماه دوم شمسی 31 روز است و برنامه با تاریخ های بالای 28 برای ماه دوم به خاط خواهد خورد.
و...
)
=====
در آخر این را هم اضافه کنم که برنامه نویسان تحت Net Framework. مثل VB.Net و C#.Net و VC++.Net و J#.Net و Delphi.Net و... نیاز به تبدیل دستی تاریخ ندارد و کلاس System.Globalization.PersianCalendar از امکانات ذاتی Framework است و میتواند تاریخ شمسی را به میلادی تبدیل کند.
همچین Framework مجهز به کلاس تبدیلی 10 تقویم دیگر معروف جهان است که با توجه به تبدیل به/از میلادی میتوان هر تاریخ در کل این 11 تقویم را به به یکی تبدیل کرد.
(نحوه استفاده از System.Globalization.PersianCalendar که خیلی ساده است، بارها در سایت بحث شده.)
موفق باشید.
melina_lolo
06-05-2012, 10:15
با سلام من يه برنامه نويس c ميخوام يا يه برنامه c
تمرين كلاسي بچه ها- گير كردم-لطفا كمكم كنيد-
سئوال:
برنامه گرافيكي بنويسيد كه يك گراف وزن دار را در قالب يك ماتريس دو بعدي دريافت كند و در خروجي درخت پوشاي مينيمم آنرا نمايش دهد؟
درس طراحي اگوريتم-كارشناسي-كمك
---------- Post added at 10:15 AM ---------- Previous post was at 10:12 AM ----------
با سلام من يه برنامه نويس c ميخوام يا يه برنامه c
تمرين كلاسي بچه ها- گير كردم-لطفا كمكم كنيد-
سئوال:
برنامه گرافيكي بنويسيد كه يك گراف وزن دار را در قالب يك ماتريس دو بعدي دريافت كند و در خروجي درخت پوشاي مينيمم آنرا نمايش دهد؟
درس طراحي اگوريتم-كارشناسي-كمك
melina_lolo@yahoo.com
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.