PDA

نسخه کامل مشاهده نسخه کامل : تبدیل تاریخها با استفاده از Persia .NET 2.0



WooKMaN
04-03-2006, 22:33
کتابخانه Persia ( نسخه 2.0) شامل چند کلاس مختلف در قالب یک فایل DLL می باشد. برای اضافه کردن آن به یک پروژه، همانند سایر کامپوننتها و کتابخانه ها، آن را به سایر reference های برنامه اضافه می کنیم. بدین ترتیب کلاس Calendar در اختیار قرار می گیرد و می توان از متدها و مشخصه های آن استفاده نمود. برای تبدیل تاریخها به یکدیگر از توابع و مشخصه های موجود در کلاس Calendar استفاده می کنیم.

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

برای این تبدیل می بایست از تابع ConvertToPersian استفاده کنیم. این تابع دارای ۳ overloads می باشد. لذا ۳ سری پارامتر مختلف را می توان برا آن در نظر گرفت.



// converting from Gregorian to Persian date

Persia.Calendar.ConvertToPersian(DateTime datetTime);

Persia.Calendar.ConvertToPersian(int year, int month, int day, Persia.DateType.Gerigorian);



// converting from Islamic to Persian date

Persia.Calendar.ConvertToPersian(Persia.MoonDate moonDate);

Persia.Calendar.ConvertToPersian(int year, int month, int day, Persia.DateType.Islamic);



مقدار برگشتی این تابع از نوع کلاس SunDate می باشد. کلاس SunDate از ۴ مشخصه برای فرمت تاریخ تبدیل شده و یک مشخصه که در برگیرنده عدد روز در هفته می باشد، تشکیل شده است. جدول زیر به بیان این مشخصه ها همراه با مثال می پردازد.

Sample Data Type Description Property
int یک آرایه ۳ عضوی از نوع int شامل عدد روز، ماه و سال Array Type
۱۳۸۴/۳/۱۸ string فرمت عددی و معمول تاریخ شمسی Simple
هجدهم خرداد ۱۳۸۴ string فرمت حروفی تاریخ شمسی Persian
چهارشنبه ۱۸ خرداد ۱۳۸۴ string تاریخ شمسی به همراه روز هفته Weekday
0=شنبه و 6=جمعه int عدد روز در هفته DayOfWeek
bool مشخص کننده کبیسه بودن سال در تقویم هجری شمسی IsLeapYear




مثال:



Persia.SunDate sunDate = Persia.Calendar.ConvertToPersian(DateTime.Now);


int year = sunDate.ArrayType[0];

int month = sunDate.ArrayType[1];

int day = sunDate.ArrayType[3];


stirng simplePersianDate = sunDate.Simple;

stirng simpleWrordPersianDate = sunDate.Persian;

stirng weekdayPersianDate = sunDate.Weekday;


int dayOfWeek = sunDate.DayOfWeek;

bool isLeapYear = sunDate.IsLeapYear;





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

برای این تبدیل از تابع ConvertToGregorian استفاده می شود.این تابع دارای ۲ overload می باشد. بدین معنی که ۲ سری پارامتر مختلف را می توان برای آن در نظر گرفت. نوع برگشتی این تابع از نوع کلاس DateTime می باشد.



DateTime date1 = Persia.Calendar.ConvertToGregorian(1384, 3, 18, DateType.Persian);


// if sunDate is a valid object of Persia.SunDate calss we can write

DateTime date2 = Persia.Calendar.ConvertToGregorian(sunDate);





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

برای این تبدیل از تابع ConvertToIslamic استفاده می شود. این تابع دارای ۳ overload می باشد. لذا ۳ سری پارامتر مختلف را می توان برای آن در نظر گرفت.



// converting from Persian to Islamic date

Persia.Calendar.ConvertToIslamic(Persia.SunDate sunDate);

Persia.Calendar.ConvertToIslamic(int year, int month, int day, DateType.Persian);


// converting from Gregorian to Islamic date

Persia.Calendar.ConvertToIslamic(DateTime datetTime);

Persia.Calendar.ConvertToIslamic(int year, int month, int day, DateType.Gerigorian);



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

Sample Data Type Description Property
int یک آرایه ۳ عضوی از نوع int شامل عدد روز، ماه و سال Array Type
۱۴۲۶/۵/۱ string فرمت عددی تاریخ قمری Simple
اِلأَربِعا ۱ جمادي الاولي ۱۴۲۶ string تاریخ قمری به همراه روز هفته Formal
0=شنبه و 6=جمعه int عدد روز در هفته DayOfWeek


مثال.



// converting from Persian to Islamic date

// if sunDate is a valid object of Persia.SunDate class


Persia.MoonDate moonDate = Persia.Calendar.ConvertToIslamic(sunDate);

// converting from Gregorian to Islamic date

Persia.MoonDate moonDate = Persia.Calendar.ConvertToIslamic(DateTime.Now);


int year = moonDate.ArrayType[0];

int month = moonDate.ArrayType[1];

int day = moonDate.ArrayType[3];


stirng simpleIslamicDate = moonDate.Simple;

string weekdayIslamicDate = moonDate.Formal;


int dayOfWeek = moonDate.DayOfWeek;





دریافت Persia .NET به همراه مثال های تکمیلی.




مقالات دیگر از همین نویسنده :

‫نقشه راه مایکروسافت برای توسعه Visual Studio

‫مروری بر CLR

‫خواندن داده ها به فرمت XML و نمایش آنها بوسیله DataList ( قسمت اول )

‫خواندن داده ها به فرمت XML و نمایش آنها بوسیله DataList ( قسمت دوم )

‫قابلیتهای جدید در ASP.NET 2

‫خواندن داده های ذخيره شده به فرمت XML (قسمت سوم)

‫لذت برنامه نويسی تحت وب با ASP.NET 2 قسمت اول: بكارگيری Master Page ها

‫لذت برنامه نويسی تحت وب با ASP.NET 2 قسمت دوم: تغيير Master Page ها بصورت ديناميكی

‫صدا زدن Event های User Control از داخل Web Form ها

blacksun
13-05-2006, 15:33
سلام
اين مطلبي كه اينجا آوردين خيلي مفيد و آموزنده اس .دستت درد نكنه.فقط يه سوال من يه برنامه نويس هستم براي يه برنامه اي نياز بود كه تاريخ شمسي رو به قمري تبديل كنم.الگوريتمي كه براي اين كار پيدا كردم يه مقدار مشكل داشت به اين صورت كه مواقعي كه تاريخ قمري يه روز به جلو يا عقب كشيده ميشه .اين الگوريتم ديگه توانائي محاسبه اون رو نداره .مي خواستم بدونم كه تابعي كه بالا معرفي كردين تا چه حد دقيق هست و اگر ممكن باشه اگه الگوريتمي براي اين منظور تو Delphi يا C++ Builder داريد .به من هم محبت بفرمائيد.
مرسي