xcomlock
جمعه 16 دی 1390, 12:58 عصر
کتابخانه Persia .NET 3.0 شامل چند کلاس مختلف در قالب یک Class Library می باشد که بصورت یک فایل dll قابل استفاده می باشد. این کتابخانه در واقع یک API می باشد که توابع مختلفی را برای تبدیل تاریخهای میلادی، هجری شمسی و هجری قمری در اختیار برنامه نویسان NET. می گذارد. برای اضافه کردن قابلیت استفاده از این توابع به یک پروژه، همانند سایر کامپوننتها و کتابخانه ها، آن را به سایرreference های یک پروژه اضافه می کنیم. بدین ترتیب کلاسCalendar در اختیار قرار می گیرد و می توان از متدها و مشخصه های آن استفاده نمود. برای تبدیل تاریخها به یکدیگر از توابع و مشخصه های موجود در کلاسCalendar استفاده می کنیم.
اگر از Silverlight استفاده می کنید فایل PersiaSL.dll را به پروژه خود اضافه کنید و برای سایر برنامه ها از فایل Persia.dll استفاده کنید.
تبدیل تاریخ میلادی به شمسی:
برای این تبدیل می بایست از تابع ConvertToPersian استفاده کنیم. این تابع دارای ۳ overload می باشد. لذا ۳ سری پارامتر مختلف را می توان برای آن در نظر گرفت .
مقدار برگشتی این تابع از نوع کلاس SolarDate می باشد. برای نمایش تاریخ بدست آمده کافیست از تبدیل کننده ()ToString استفاده کنیم. کلاس SolarDate دارای ۵ مشخصه می باشد که عبارتند از:
80239
همانطور که گفته شد برای تبدیل تاریخ شمسی بدست آمده به فرمت string بطوریکه قابل نمایش باشد می توان از تابع ()ToStringاستفاده کرد. همانند کد زیر:
Persia.SolarDate solarDate = Persia.Calendar.ConvertToPersian(DateTime.Now);
// getting the simple format of persian date
string str = solarDate.ToString();
همانطور که می دانید تاریخ شمسی را به فرمت های متنوعی می توان نمایش داد. برای راحتی کار برنامه نویسان، کلاس SolarDate تعداد زیادی از این فرمتها را بصورت پیش فرض در خود گنجانده است که به راحتی به همراه تابع ()ToString می توان آنها را مورد استفاده قرار داد. جدول زیر این فرمتها و پارامتر مورد نیاز برای به کار گیری به همراه تابع ()ToString را نشان می دهد.
80242
همنطور که در جدول فوق مشاهده می شود ۶ فرمت آخری مربوط به فرمتهای ساعت می شوند. این فرمتها می توانند به همراه فرمت تاریخ نیز به کار روند مانند کد زیر:
string str = solarDate.ToString("H,w");
دقت داشته باشید که برخی از این فرمتها یا ترکیب آنها به راست به چپ و یا چپ به راست بودن کنترل و یا محل مورد نظر برای نشان دادن آن حساس می باشد. اگر با چنین مشکلی روبرو شدید باید جهت کنترل یا تگ html مربوطه را تغییر دهید.
ممکن است فرمت مورد نظر شما در جدول فوق نباشد، در این حالت با داشتن مشخصه ArrayType از کلاس SolarDate خود می توانید به راحتی فرمت مورد نظرتان را ایجاد کنید.
برخی دیگر از فرمتهایی که به همراه تاریخ و ساعت به کار می رود، نشان دادن مدت می باشد. کتابخانه Persia در نسخه جدید خود تعدادی از این فرمتها را به طور پیش فرض در خود قرار داده که به همراه تابع ()ToRelativeDateString و پارامتر مربوطه مورد استفاده قرار می گیرند.
مثلا" فرض کنید که تاریخ ثبت یک خبر را ذخیره کرده اید حال می خواهید تا زمانی که 5 روز از درج آن خبر نگذشته است تاریخ انتشار آن خبر بصورت زیر نمایش داده شود.
با گذشت یک روز: ۱ روز پیش
با گذشت دو روز: ۲ روز پیش
با گذشت پنج روز پیش: ۵ روز پیش
برای این حالت از تابع ()ToRelativeDateString به صورت زیر استفاده می کنیم:
string str = solarDate.ToRelativeDateString ("D,5");
هرگاه تاریخ درج خبر مورد نظر فراتر از ۵ روز شود خروجی به طور خودکار تنها فرمت ساده تاریخ انتشار آن خبر را در بر خواهد داشت.
پیش فرض این پارامتر (پارامتر D) مقدار ۳۰ روز است. یعنی اگر در مثال فوق عدد ۵ را لحاظ نکنیم و کد فوق را بصورت:
string str = solarDate.ToRelativeDateString ("D");
بنویسیم خروجی تا ۳۰ روز بعد از انتشار خبر بصورت x روز پیش نمایش داده خواهد شد.
با در نظر داشتن این مثال می توانید لیست کامل این فرمتها به همراه پارامتر مورد نیاز را در جدول زیر مشاهده نمایید.
80244
پیش فرض ها و همچنین مقادیر بیشینه برای پارامترهای فوق در مورد ساعت ۲۴ ساعت، دقیقه ۶۰ دقیقه و اکنون ۵ دقیقه، می باشد. در صورتی که بخواهید پیش فرضها را تغییر دهید می توانید عدد مورد نظر خود را با یک کاما به پارامتر مربوطه بیافزایید. مانند مثال زیر:
string str = solarDate.ToRelativeDateString (“p,4,60,22”);
در این مثال خروجی تا قبل از ۴ دقیقه عبارت اکنون را برمی گرداند سپس تا ۶۰ دقیقه عبارت x دقیقه پیش نشان داده می شود و سپس تا ۲۲ ساعت بعد عبارت x ساعت پیش نمایش داده می شود.
تبدیل تاریخ شمسی به میلادی:
برای این تبدیل از تابع ConvertToGregorian استفاده می شود. این تابع دارای ۴ overload می باشد. بدین معنی که ۴ سری پارامتر مختلف را می توان برای آن در نظر گرفت. نوع برگشتی این تابع از نوع کلاس DateTime می باشد.
DateTime ConvertToGregorian(SolarDate solarDate)
DateTime ConvertToGregorian(LunarDate lunarDate)
DateTime ConvertToGregorian(int year, int month, int day, DateType dateType)
DateTime ConvertToGregorian(int year, int month, int day, int hour, int minute, int
second, DateType dateType)
تبدیل تاریخ شمسی به قمری:
برای این تبدیل از تابع ConvertToIslamic استفاده می شود. این تابع دارای ۳ overload می باشد. لذا ۳ سری پارامتر مختلف را می توان برای آن در نظر گرفت.
LunarDate ConvertToIslamic(DateTime date)
LunarDate ConvertToIslamic(SolarDate solarDate)
LunarDate ConvertToIslamic(int year, int month, int day, DateType dateType)
نوع برگشتی این تابع از نوع کلاس LunarDate می باشد که دارای مشخصه های زیر است.
80245
برای نمایش تاریخ قمری نیز فرمت های متنوعی را می توان به کار برد. که چند نمونه از آنها بصورت پیش فرض در کتابخانه Persia آورده شده اند که در جدول زیر پرامترهای آن مشخص شده اند.
80246
توجه داشته باشید که تاریخ قمری که در کتابخانه Persia تبدیل می شود همانند تاریخ قمری بکار رفته در NET Framework. می باشد که با تاریخ قمری مورد استفاده در کشور کمی متفاوت است.
تبدیل اعداد لاتین به اعداد فارسی:
شاید در برخی از سایتهای فارسی زبان دیده اید که با توجه به اینکه متنها با فونتهای فارسی نوشته شده اند اما اعداد بصورت لاتین نمایش داده شده اند. این چندان خوشایند نیست که از اعداد لاتین در یک متن فارسی استفاده کنیم. برای این مشکل راه حلهای بسیاری وجود دارد که استفاده از همه آنها نیز بسیار راحت می باشد. کتابخانه Persia نیز یک راه حل ساده را معرفی کرده است که در نسخه قبلی این کتابخانه نیز وجود داشت. برای تبدیل اعداد لاتین به فارسی تنها کافیست که عدد مربوطه را با تابع ToPersianString از کلاس PersianWord پاس کنید. مقدار برگشتی این تابع همان اعداد منتها به صورت فارسی می باشد.
String persianNumber = Persia.PersianWord.ToPersianString(12345);
تبدیل حروف ی و ک عربی به فارسی:
حتما" بارها با این مشکل مواجه شده اید که وقتی اسمی را که شامل حرف ی و یا ک باشد در دیتابیس جستجو می کنید، چیزی از این جستجو حاصل نمی شود ولی یقین دارید که اسم مربوطه در دیتابیس موجود است. این مشکل وقتی به وقوع می پیوندد که آن اسم با حروف ی و ک عربی به دیتابیس وارد شده اند و شما برای جستجو حروف ی و یا ک فارسی را تایپ کرده اید (و یا بلعکس). برای اینکه همیشه حروف فارسی ی و ک را به دیتابیس و هرجایی دیگر که بعدا" مورد جستجو قرار می گیرد، وارد کنید می توانید باز هم از تابع ToPersianString استفاده نمایید. در این اینصورت همیشه اطمینان دارید که هر رشته ای را که به این تابع پاس می کنید مقدار برگشتی آن دارای حروف ی و ک عربی نمی باشد.
دریافت Persia.NET 3.0 (http://www.persiadevelopers.com/components/Persia/persia.zip)
منبع : PersiaDevelopers.com
اگر از Silverlight استفاده می کنید فایل PersiaSL.dll را به پروژه خود اضافه کنید و برای سایر برنامه ها از فایل Persia.dll استفاده کنید.
تبدیل تاریخ میلادی به شمسی:
برای این تبدیل می بایست از تابع ConvertToPersian استفاده کنیم. این تابع دارای ۳ overload می باشد. لذا ۳ سری پارامتر مختلف را می توان برای آن در نظر گرفت .
مقدار برگشتی این تابع از نوع کلاس SolarDate می باشد. برای نمایش تاریخ بدست آمده کافیست از تبدیل کننده ()ToString استفاده کنیم. کلاس SolarDate دارای ۵ مشخصه می باشد که عبارتند از:
80239
همانطور که گفته شد برای تبدیل تاریخ شمسی بدست آمده به فرمت string بطوریکه قابل نمایش باشد می توان از تابع ()ToStringاستفاده کرد. همانند کد زیر:
Persia.SolarDate solarDate = Persia.Calendar.ConvertToPersian(DateTime.Now);
// getting the simple format of persian date
string str = solarDate.ToString();
همانطور که می دانید تاریخ شمسی را به فرمت های متنوعی می توان نمایش داد. برای راحتی کار برنامه نویسان، کلاس SolarDate تعداد زیادی از این فرمتها را بصورت پیش فرض در خود گنجانده است که به راحتی به همراه تابع ()ToString می توان آنها را مورد استفاده قرار داد. جدول زیر این فرمتها و پارامتر مورد نیاز برای به کار گیری به همراه تابع ()ToString را نشان می دهد.
80242
همنطور که در جدول فوق مشاهده می شود ۶ فرمت آخری مربوط به فرمتهای ساعت می شوند. این فرمتها می توانند به همراه فرمت تاریخ نیز به کار روند مانند کد زیر:
string str = solarDate.ToString("H,w");
دقت داشته باشید که برخی از این فرمتها یا ترکیب آنها به راست به چپ و یا چپ به راست بودن کنترل و یا محل مورد نظر برای نشان دادن آن حساس می باشد. اگر با چنین مشکلی روبرو شدید باید جهت کنترل یا تگ html مربوطه را تغییر دهید.
ممکن است فرمت مورد نظر شما در جدول فوق نباشد، در این حالت با داشتن مشخصه ArrayType از کلاس SolarDate خود می توانید به راحتی فرمت مورد نظرتان را ایجاد کنید.
برخی دیگر از فرمتهایی که به همراه تاریخ و ساعت به کار می رود، نشان دادن مدت می باشد. کتابخانه Persia در نسخه جدید خود تعدادی از این فرمتها را به طور پیش فرض در خود قرار داده که به همراه تابع ()ToRelativeDateString و پارامتر مربوطه مورد استفاده قرار می گیرند.
مثلا" فرض کنید که تاریخ ثبت یک خبر را ذخیره کرده اید حال می خواهید تا زمانی که 5 روز از درج آن خبر نگذشته است تاریخ انتشار آن خبر بصورت زیر نمایش داده شود.
با گذشت یک روز: ۱ روز پیش
با گذشت دو روز: ۲ روز پیش
با گذشت پنج روز پیش: ۵ روز پیش
برای این حالت از تابع ()ToRelativeDateString به صورت زیر استفاده می کنیم:
string str = solarDate.ToRelativeDateString ("D,5");
هرگاه تاریخ درج خبر مورد نظر فراتر از ۵ روز شود خروجی به طور خودکار تنها فرمت ساده تاریخ انتشار آن خبر را در بر خواهد داشت.
پیش فرض این پارامتر (پارامتر D) مقدار ۳۰ روز است. یعنی اگر در مثال فوق عدد ۵ را لحاظ نکنیم و کد فوق را بصورت:
string str = solarDate.ToRelativeDateString ("D");
بنویسیم خروجی تا ۳۰ روز بعد از انتشار خبر بصورت x روز پیش نمایش داده خواهد شد.
با در نظر داشتن این مثال می توانید لیست کامل این فرمتها به همراه پارامتر مورد نیاز را در جدول زیر مشاهده نمایید.
80244
پیش فرض ها و همچنین مقادیر بیشینه برای پارامترهای فوق در مورد ساعت ۲۴ ساعت، دقیقه ۶۰ دقیقه و اکنون ۵ دقیقه، می باشد. در صورتی که بخواهید پیش فرضها را تغییر دهید می توانید عدد مورد نظر خود را با یک کاما به پارامتر مربوطه بیافزایید. مانند مثال زیر:
string str = solarDate.ToRelativeDateString (“p,4,60,22”);
در این مثال خروجی تا قبل از ۴ دقیقه عبارت اکنون را برمی گرداند سپس تا ۶۰ دقیقه عبارت x دقیقه پیش نشان داده می شود و سپس تا ۲۲ ساعت بعد عبارت x ساعت پیش نمایش داده می شود.
تبدیل تاریخ شمسی به میلادی:
برای این تبدیل از تابع ConvertToGregorian استفاده می شود. این تابع دارای ۴ overload می باشد. بدین معنی که ۴ سری پارامتر مختلف را می توان برای آن در نظر گرفت. نوع برگشتی این تابع از نوع کلاس DateTime می باشد.
DateTime ConvertToGregorian(SolarDate solarDate)
DateTime ConvertToGregorian(LunarDate lunarDate)
DateTime ConvertToGregorian(int year, int month, int day, DateType dateType)
DateTime ConvertToGregorian(int year, int month, int day, int hour, int minute, int
second, DateType dateType)
تبدیل تاریخ شمسی به قمری:
برای این تبدیل از تابع ConvertToIslamic استفاده می شود. این تابع دارای ۳ overload می باشد. لذا ۳ سری پارامتر مختلف را می توان برای آن در نظر گرفت.
LunarDate ConvertToIslamic(DateTime date)
LunarDate ConvertToIslamic(SolarDate solarDate)
LunarDate ConvertToIslamic(int year, int month, int day, DateType dateType)
نوع برگشتی این تابع از نوع کلاس LunarDate می باشد که دارای مشخصه های زیر است.
80245
برای نمایش تاریخ قمری نیز فرمت های متنوعی را می توان به کار برد. که چند نمونه از آنها بصورت پیش فرض در کتابخانه Persia آورده شده اند که در جدول زیر پرامترهای آن مشخص شده اند.
80246
توجه داشته باشید که تاریخ قمری که در کتابخانه Persia تبدیل می شود همانند تاریخ قمری بکار رفته در NET Framework. می باشد که با تاریخ قمری مورد استفاده در کشور کمی متفاوت است.
تبدیل اعداد لاتین به اعداد فارسی:
شاید در برخی از سایتهای فارسی زبان دیده اید که با توجه به اینکه متنها با فونتهای فارسی نوشته شده اند اما اعداد بصورت لاتین نمایش داده شده اند. این چندان خوشایند نیست که از اعداد لاتین در یک متن فارسی استفاده کنیم. برای این مشکل راه حلهای بسیاری وجود دارد که استفاده از همه آنها نیز بسیار راحت می باشد. کتابخانه Persia نیز یک راه حل ساده را معرفی کرده است که در نسخه قبلی این کتابخانه نیز وجود داشت. برای تبدیل اعداد لاتین به فارسی تنها کافیست که عدد مربوطه را با تابع ToPersianString از کلاس PersianWord پاس کنید. مقدار برگشتی این تابع همان اعداد منتها به صورت فارسی می باشد.
String persianNumber = Persia.PersianWord.ToPersianString(12345);
تبدیل حروف ی و ک عربی به فارسی:
حتما" بارها با این مشکل مواجه شده اید که وقتی اسمی را که شامل حرف ی و یا ک باشد در دیتابیس جستجو می کنید، چیزی از این جستجو حاصل نمی شود ولی یقین دارید که اسم مربوطه در دیتابیس موجود است. این مشکل وقتی به وقوع می پیوندد که آن اسم با حروف ی و ک عربی به دیتابیس وارد شده اند و شما برای جستجو حروف ی و یا ک فارسی را تایپ کرده اید (و یا بلعکس). برای اینکه همیشه حروف فارسی ی و ک را به دیتابیس و هرجایی دیگر که بعدا" مورد جستجو قرار می گیرد، وارد کنید می توانید باز هم از تابع ToPersianString استفاده نمایید. در این اینصورت همیشه اطمینان دارید که هر رشته ای را که به این تابع پاس می کنید مقدار برگشتی آن دارای حروف ی و ک عربی نمی باشد.
دریافت Persia.NET 3.0 (http://www.persiadevelopers.com/components/Persia/persia.zip)
منبع : PersiaDevelopers.com