گاهی اوقات ممکن است نیاز داشته باشیم زمان ها را با هم مقایسه کرده، اختلاف زمانی بین آنها را بدست بیاوریم یا اینکه تاریخ را از ساعت جدا کرده و نمایش دهیم و یا زمان را بر اساس الگویی خاص نمایش دهیم. برای بدست آوردن این توانایی ها نیاز داریم تا با کلاس DateTime که مربوط به زمان و تاریخ است و همچنین کلاس TimeSpan که برای محاسبه اختلاف زمانی یا ایجاد برچسب زمانی مورد استفاده قرار می گیرند، بیشتر آشنا شویم. این کلاس ها در کتابخانه اصلی سی شارپ یعنی System وجود دارند و برای دسترسی به آنها نیاز به فراخوانی کتابخانه ای نداریم.
[divider]
نمایش تاریخ و زمان با فرمت های خاص
در زبان سی شارپ فرمت های از پیش تعیین شده ای برای نمایش زمان و تاریخ وجود دارد که در تصویر فوق لیست آنها را مشاهده می کنید. علاوه بر این فرمت ها، می توانید بصورت سفارشی نیز اقدام به ساخت فرمت دلخواه خود کنید. به نمونه کد زیر دقت کنید:
string dateTime = DateTime.Now.toString("D");
همانطور که می شود حدس زد حرف “D” بیانگر Date به معنای تاریخ خواهد بود و با اجرای این کد، تاریخ کنونی سیستم در رشته dateTime قرار می گیرد. حال اگر این رشته را در یک TextBox قرار دهیم، خروجی مانند تصویر زیر خواهد شد:
[divider]
مقایسه زمان ها
برای مقایسه زمان ها از تابع Compare که در کلاس DateTime موجود است، استفاده می کنیم. به نمونه کد زیر دقت کنید:
DateTime first = DateTime.Parse("9/4/2014 1:35:55 AM"); DateTime second = DateTime.Parse("9/4/2014 1:35:34 AM"); if (DateTime.Compare(first, second)>0) MessageBox.Show("زمان اول بزرگتر است"); else if(DateTime.Compare(first, second)<0) MessageBox.Show("زمان دوم بزرگتر است"); else MessageBox.Show("زمان ها با هم برابر هستند");
خروجی کد بالا را می توانید در تصویر زیر مشاهده کنید:
[divider]
بدست آوردن اختلاف زمانی
همانطور که در مقدمه این آموزش نیز بیان شد، برای بدست آوردن اختلاف زمانی میان دو DateTime باید از کلاس TimeSpan کمک بگیریم. کافیست حاصل تفریق دو زمان مورد نظر را در شی ای از جنس کلاس TimeSpan قرار دهیم تا بتوانیم اختلاف میان آن دو را بدست آوریم. به نمونه کد زیر دقت کنید:
DateTime first = DateTime.Parse("9/4/2014"); DateTime second = DateTime.Parse("10/4/2014"); TimeSpan ts = second - first; string msg = "اختلاف زمان بر حسب روز: " + ts.TotalDays + "\n"; msg += "اختلاف زمان بر حسب ساعت: " + ts.TotalHours + "\n"; msg += "اختلاف زمان بر حسب دقیقه: " + ts.TotalMinutes + "\n"; msg += "اختلاف زمان بر حسب ثانیه: " + ts.Seconds + "\n"; MessageBox.Show(msg);
خروجی کد بالا پیغامی را نمایش خواهد داد که اختلاف میان دو زمان first و second را بر حسب روز، ساعت، دقیقه و ثانیه بیان می کند.
موفق و پیروز باشید!
همچنین می توانید نمونه پروژه مربوط به این آموزش را دانلود نمایید:
پسورد فایل: www.myempire.ir
ای بابا مطلب بذارید دیگه!
علی جان،
چند هفته ای میشه که مطلب جدید تو سایت نذاشتیم. بابت این تاخیر طولانی معذرت خواهی میکنم.
دلیلش اینه که داریم یه نرم افزار اندرویدی آماده میکنیم و قراره بزودی این برنامه منتشر بشه.
بخاط همین بیشتر وقت و انرژیمون رو برای تموم کردن این برنامه داریم صرف میکنیم.
ایشالا تا چند روز دیگه مطالب جدید تو سایت قرار داده میشه.
سلام خسته نباشید
خیلی ممنون بابت این آموزش
خدا قوت 😉
خیلی ممنون سعید جان
امیدوارم که مطالب مفید بوده باشن و مورد استفاده قرار بگیرن
موفق و پیروز باشی
salam baradar
age bekhay etelate zamano az datagridview begiri bayad chi kar konim
ممنون بابت مطلب بسیار مفیدتون
سلام من یه برنامه با سی شارپ توی فرم نوشتم ولی یه قسمت هست که باید اسم روز هفته به زبان فارسی نوشته بشه .از getdayofweek که استفاده میکنم اسم روز هفته انگلیسی نوشته میشه لطفا اگه میتونید کمکم کنید یه دستور سوییچ به کار بردم ولی جواب نمیگیرم.لطفا راهنماییم کنید و لطفا جوابتون رو به ایمیلم ارسال کنید
سلام مگه امکانش هست تاری رو بشه با یه عدد مقایسه کرد آخه چجوری ؟
در ضمن اگر بخوام تاریخ رو از ساعت جدا کنم چی کار کنم؟
دوست عزیز، تاریخ با عدد مقایسه نمیشه، دو تاریخ با هم مقایسه میشن. همینطور دو تا تاریخ رو میشه از همدیگه کم کرد. در این حالت، حاصل تفریق در واقع TimeInterval است که اختلاف زمانی بین دو تاریخ رو نشون میده.
سلام
خیلی عالی بود
تشکر