اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
سه دقیقه
همانطور که در توضیح پروژه PersianDateTime آمده است، کلاس PersianDateTime جایگزینی است برای System.DateTime برای استفاده در پروژههایی که احتیاج به تاریخ شمسی و ساعت رسمی ایران یا سایر کشورهای فارسیزبان، مستقل از Time Zone سیستم و در نظر گرفتن Daylight Saving Time، دارند. این کلاس شامل اکثر متدها، پراپرتیها و عملگرهای متداول System.DateTime است.
دسترسی به تاریخ و ساعت فعلی :
PersianDateTime now = PersianDateTime.Now; string persianDateTime = now.ToString(); // 1392/03/09 23:37:57 string persianDate = now.ToString(PersianDateTimeFormat.Date); // 1392/03/09 string persianFullDateTime = now.ToString("dddd d MMMM yyyy ساعت hh:mm:ss tt"); // پنج شنبه 9 خرداد 1392 ساعت 11:37:57 ب.ظ TimeSpan persianTime = now.TimeOfDay; // 23:37:57.4641984
نحوه محاسبه PersianDateTime.Now بر اساس فیلد استاتیک PersianDateTime.Mode است که مقدار پیشفرض آن PersianDateTimeMode.UtcOffset است.
PersianDateTime.Mode را میتوان یکی از سه مقدار زیر قرار داد :
PersianDateTime.Mode را میتوان یکی از سه مقدار زیر قرار داد :
- System : بر اساس تاریخ و زمان سیستم (Time Zone فعلی سیستم)
- PersianTimeZoneInfo : بر اساس Time Zone تعیین شده در فیلد استاتیک PersianDateTime.PersianTimeZoneInfo (مستقل از Time Zone سیستم)
- UtcOffset : بر اساس اختلاف ساعت با UTC، مشخص شده در فیلد استاتیک PersianDateTime.OffsetFromUtc (مستقل از Time Zone سیستم)
مقدار پیشفرض PersianDateTime.PersianTimeZoneInfo برابر Iran Standard Time Zone است. توجه داشته باشید که در این حالت از DaylightSavingTime تعیین شده در Time Zone استفاده خواهد شد که مثلا برای ایران با زمان واقعی آن اختلاف دارد و باید آنرا اصلاح کرد .
مقدار پیشفرض PersianDateTime.OffsetFromUtc برابر 3 ساعت و نیم است. در این حالت DaylightSavingTime با توجه به مقادیر سه فیلد استاتیک DaylightSavingTimeStart ،DaylightSavingTimeEnd و DaylightSavingTime تعیین میشود که به صورت پیشفرض برابر ساعت 24 اول فروردین، ساعت 24 سیام شهریور و یک ساعت است.
تمام فیلدهای استاتیک ذکر شده به صورت public تعریف شدهاند تا برنامهنویسان سایر کشورهای فارسیزبان بتوانند به دلخواه خود آنرا تغییر دهند.
نحوه کار با مقادیر رشتهای تاریخ شمسی هم اینگونه است :
PersianDateTime persianDate1 = PersianDateTime.Parse("1392/03/02"); PersianDateTime persianDate2 = PersianDateTime.Parse("1392/03/02", "23:32:56");
چند سازنده هم وجود دارد برای کسانی که تاریخ را به صورت int و ساعت را int یا short (بدون ثانیه) ذخیره میکنند :
تبدیل تاریخ میلادی به شمسی :
تبدیل تاریخ شمسی به میلادی :
علاوه بر متد ToString معمولی، دو overload دیگر از این متد برای نمایش فرمتهای مختلف PersianDateTime وجود دارد :
که اولی برای فرمتهای معمول و دومی برای هر نوع فرمت دلخواه قابل استفاده است که چند نمونه آنرا در قسمت تعیین تاریخ و ساعت فعلی دیدید.
برخی از خصوصیات کلاس PersianDateTime :
همچنین تمام عملگرهای +، -، >، <، =>، =<، ==، و =! قابل استفاده هستند.
PersianDateTime persianDate1 = new PersianDateTime(13920310); PersianDateTime persianDate2 = new PersianDateTime(13920310, 233256); PersianDateTime persianDate3 = new PersianDateTime(13920310, (short)2332);
تبدیل تاریخ میلادی به شمسی :
DateTime miladiDate = new DateTime(2013, 5, 31); PersianDateTime persianDate = new PersianDateTime(miladiDate);
تبدیل تاریخ شمسی به میلادی :
PersianDateTime persianDate = PersianDateTime.Parse("1392/03/02"); DateTime miladiDate = persianDate.ToDateTime();
علاوه بر متد ToString معمولی، دو overload دیگر از این متد برای نمایش فرمتهای مختلف PersianDateTime وجود دارد :
public string ToString(PersianDateTimeFormat format); public string ToString(string format);
برخی از خصوصیات کلاس PersianDateTime :
- Year : سال
- Month : ماه
- Day : روز
- TimeOfDay : زمان سپری شده از ابتدای روز
- TimeOfWeek :زمان سپری شده از ابتدای هفته
- TimeOfMonth : زمان سپری شده از ابتدای ماه
- TimeOfYear : زمان سپری شده از ابتدای سال
- DaysInYear : تعداد روز سال
- DaysInMonth : تعداد روز ماه
- DayOfWeek : چندمین روز هفته
- DayOfYear : چندمین روز سال
- DayName : نام روز
- MonthName : نام ماه
- Date : تاریخ بدون زمان
- FirstDayOfWeek : اولین روز هفته
- LastDayOfWeek : آخرین روز هفته
- FirstDayOfMonth : اولین روز ماه
- LastDayOfMonth : آخرین روز ماه
- FirstDayOfYear : اولین روز سال
- LastDayOfYear : آخرین روز سال
برخی دیگر از متدهای کلاس PersianDateTime :
public PersianDateTime Add(TimeSpan value); public PersianDateTime AddDays(double value); public PersianDateTime AddMonths(int months); public PersianDateTime AddYears(int value); public PersianDateTime AddHours(double value); public PersianDateTime AddMinutes(double value); public PersianDateTime AddSeconds(double value);