کار با تقویم ها در سی شارپ

برای گرفتن تاریخ فعلی در سی شارپ خیلی راحت می توانیم با استفاده از تکه کد زیر زمان فعلی را بدست بیاریم.

DateTime dt = DateTime.Now;

با اجرای کد بالا زمان فعلی از ویندوز درخواست میشه و مقدار آن درون متغییری بنام dt ریخته می شود.

ولی مسئله که وجود داره اینه که شاید شما در تنظیمات تاریخ ویندوز ، تقویم پیشفرض را به دلخواه تغییر دادید ، یعنی شما رفتید به کنترل پنل ویندوز و اونجا وارد قسمت Region شدید و تقویم پیشفرض را به عنوان مثال گذاشتید روی تقویم قمری ، بنابراین دستور بالا زمان فعلی را بر اساس تقویم پیشفرض سیستم شما بر میگرداند ، یعنی اگر تقویم شما هم اکنون قمری باشد این دستور نیز تاریخ فعلی را به قمری بر میگرداند و اگر تقویم پیشفرض ویندوز شما روی شمسی تنظیم شده باشد تاریخ فعلی را به شمسی بر میگرداند.

حال با این اوصاف ممکنه شما بخواهید بدون تغییر تقویم پیشفرض سیستم خود تاریخ فعلی را در یکی از تقویم ها بدست بیارید

خوشبختانه سی شارپ برای این کار هم دستوری دارد که می توانید استفاده کنید. برای اینکار شما بعد از بدست آوردن زمان فعلی سیستم ، بایستی یک تقویم هم ایجاد کنید که این تقویم می تواند یکی از انواع تقویم ها باشد (شمسی ، میلادی ، قمری):

 

ساخت تقویم میلادی در سی شارپ :

System.Globalization.GregorianCalendar  miladi = new System.Globalization.GregorianCalendar();

 

ساخت تقویم شمسی در سی شارپ :

System.Globalization.PersianCalendar  shamsi = new System.Globalization.PersianCalendar();

 

ساخت تقویم قمری در سی شارپ :

System.Globalization.HijriCalendar    ghamari = new System.Globalization.HijriCalendar();

 

ساخت تقویم کره ای در سی شارپ :

System.Globalization.KoreanCalendar    korean = new System.Globalization.KoreanCalendar();

 

و تقویم های مختلف که در این فضای نام موجود هست.

حالا براحتی از تقویمی که ساختید بخواهید تا زمان رو به شما اعلام کنه که به تفکیک می تونید سال ، ماه ، روز ، ساعت ، دقیقه ، ثانیه ، میلی ثانیه را بگیرید :

 

String     Year        =       miladi.GetYear(dt);

String     Mounth    =       miladi.GetMonth(dt);

String     Day         =       miladi.GetDayOfMonth(dt);

String     Hours      =       miladi.GetHour(dt);

String     Minute     =       miladi.GetMinute(dt);

String     Secound   =       miladi.GetSecond(dt);

 

در دستورات بالا دقت کنید که متغییر dt را بایستی به تقویم بدید تا تاریخ فعلی را بر گرداند که حتی می توانید برای تبدیل تاریخ ها در سی شارپ نیز از این دو دستور ساده استفاده کنید و بجای dt  تاریخ مورد نظر را بدید تا در تقویم مورد نظر تبدیل شود . 

 

امیدوارم براتون مفید بوده باشه

ارادتمند شما مهدی حسامی