کار با datetime در سیشارپ
کار با datetime در سیشارپ یکی از ساختارهای اصلی در زبان #C برای ذخیره و مدیریت اطلاعات مربوط به تاریخ و زمان است.
کار با DateTime در سیشارپ
کار با تاریخ و زمان یکی از رایجترین نیازها در توسعه نرمافزار است.
تقریباً هیچ برنامهای را نمیتوان پیدا کرد که با دادههای زمانی سروکار نداشته باشد؛ از ثبت زمان ورود کاربران و ایجاد گزارشهای مالی گرفته تا زمانبندی وظایف، محاسبه اختلاف بین دو تاریخ و نمایش زمان محلی کاربران. در زبان #C، ساختار DateTime یکی از مهمترین ابزارها برای مدیریت تاریخ و زمان محسوب میشود.
کلاس DateTime که در فضای نام System قرار دارد، امکانات متنوعی برای ایجاد، مقایسه، قالببندی و انجام محاسبات روی تاریخ و زمان در اختیار برنامهنویسان قرار میدهد. اگرچه استفاده اولیه از آن ساده است، اما آشنایی با قابلیتهای پیشرفتهتر آن میتواند از بروز خطاهای رایج در پروژههای واقعی جلوگیری کند.
DateTime چیست؟
DateTime یک ساختار (Struct) در داتنت است که اطلاعات مربوط به تاریخ و زمان را در یک متغیر ذخیره میکند.
نمونه تعریف:
DateTime today = DateTime.Now;
در این مثال تاریخ و ساعت فعلی سیستم در متغیر today ذخیره میشود.
دریافت تاریخ و زمان جاری
یکی از پرکاربردترین قابلیتهای DateTime، دریافت زمان فعلی است.
تاریخ و ساعت محلی
DateTime.Now
نمونه خروجی:
2026-07-18 15:42:30
فقط تاریخ
DateTime.Today
این مقدار ساعت را برابر 00:00:00 قرار میدهد.
زمان جهانی (UTC)
DateTime.UtcNow
در برنامههای تحت وب و سیستمهای توزیعشده معمولاً توصیه میشود زمانها به صورت UTC ذخیره شوند.
ایجاد یک DateTime جدید در سی شارپ
میتوان یک تاریخ دلخواه ایجاد کرد.
DateTime birthday = new DateTime(1998,5,12);
همچنین امکان تعیین ساعت نیز وجود دارد.
DateTime meeting =
new DateTime(2026,8,15,14,30,0);
در این مثال تاریخ جلسه برابر ۱۵ آگوست ۲۰۲۶ ساعت ۱۴:۳۰ خواهد بود.
دسترسی به اجزای تاریخ
DateTime دارای ویژگیهای متعددی است.
DateTime now = DateTime.Now;
Console.WriteLine(now.Year);
Console.WriteLine(now.Month);
Console.WriteLine(now.Day);
Console.WriteLine(now.Hour);
Console.WriteLine(now.Minute);
Console.WriteLine(now.Second);
خروجی:
2026
7
18
15
42
30
سایر ویژگیهای مهم:
- DayOfWeek
- DayOfYear
- TimeOfDay
- Millisecond
قالببندی تاریخ در سی شارپ
نمایش تاریخ یکی از مهمترین بخشهای کار با DateTime است.
قالب استاندارد
DateTime.Now.ToString()
نمایش سفارشی
DateTime.Now.ToString("yyyy/MM/dd")
خروجی
2026/07/18
نمونه دیگر
DateTime.Now.ToString("dd-MM-yyyy")
خروجی
18-07-2026
نمایش ساعت
DateTime.Now.ToString("HH:mm:ss")
خروجی
15:42:30
نمایش نام ماه
DateTime.Now.ToString("MMMM")
خروجی
July
همچنین میتوان با استفاده از CultureInfo تاریخ را مطابق زبان و فرهنگهای مختلف نمایش داد.
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
شرکت در دوره آموزش برنامه نویسی سی شارپ
تبدیل رشته به DateTime در سی شارپ
گاهی تاریخ از کاربر دریافت میشود.
string input = "2026-07-18";
DateTime date =
DateTime.Parse(input);
اگر احتمال خطا وجود داشته باشد بهتر است از:
DateTime.TryParse()
استفاده شود.
نمونه
if(DateTime.TryParse(input,out DateTime result))
{
Console.WriteLine(result);
}
مزیت TryParse این است که در صورت ورود اطلاعات نامعتبر، برنامه دچار Exception نمیشود.
مقایسه تاریخها
برای مقایسه دو تاریخ میتوان از عملگرهای معمولی استفاده کرد.
DateTime start =
new DateTime(2026,1,1);
DateTime end =
new DateTime(2026,12,31);
bool result =
start < end;
همچنین:
==
!=
>
<
>=
<=
همگی قابل استفاده هستند.
محاسبه اختلاف دو تاریخ
اختلاف دو DateTime یک شیء از نوع TimeSpan برمیگرداند.
DateTime d1 =
new DateTime(2026,1,1);
DateTime d2 =
new DateTime(2026,1,20);
TimeSpan diff = d2-d1;
نمایش تعداد روزها
Console.WriteLine(diff.Days);
خروجی
19
همچنین میتوان دریافت:
- TotalDays
- TotalHours
- TotalMinutes
- TotalSeconds
خطاهای رایج هنگام کار با DateTime در سی شارپ
برخی از اشتباهات متداول عبارتاند از:
- ذخیره زمان محلی به جای UTC
- استفاده از Parse بدون مدیریت خطا
- فراموش کردن تفاوت Culture در تبدیل تاریخ
- مقایسه رشتههای تاریخ به جای اشیای DateTime
- استفاده از فرمتهای وابسته به سیستم عامل
با رعایت این نکات میتوان از بسیاری از خطاهای مرتبط با تاریخ و زمان جلوگیری کرد.
DateTime دارای متدهای متنوعی برای تغییر تاریخ است.
-
افزودن روز
DateTime.Now.AddDays(10)
-
کم کردن روز
DateTime.Now.AddDays(-5)
-
افزودن ماه
DateTime.Now.AddMonths(2)
-
افزودن سال
DateTime.Now.AddYears(1)
-
افزودن ساعت
DateTime.Now.AddHours(5)
-
افزودن دقیقه
DateTime.Now.AddMinutes(30)
این متدها شیء اصلی را تغییر نمیدهند بلکه یک DateTime جدید برمیگردانند.
استفاده از TimeSpan در سی شارپ
TimeSpan نشاندهنده یک بازه زمانی است.
TimeSpan duration =
new TimeSpan(2,30,0);
خروجی
02:30:00
همچنین
DateTime.Now + duration
یا
DateTime.Now-duration
کاملاً امکانپذیر است.
DateTime و پایگاه داده
در SQL Server معمولاً ستونهای زیر استفاده میشوند.
- date
- datetime
- datetime2
- smalldatetime
در EF Core یا ADO.NET معمولاً نگاشت آنها به DateTime انجام میشود.
نمونه:
public DateTime CreatedAt { get; set; }
بهتر است زمان ثبت اطلاعات با UTC ذخیره شود.
CreatedAt = DateTime.UtcNow;
DateTimeKind چیست؟
هر DateTime دارای یک ویژگی به نام Kind است.
سه مقدار اصلی:
- Utc
- Local
- Unspecified
مثال
DateTime.Now.Kind
خروجی
Local
و
DateTime.UtcNow.Kind
خروجی
Utc
این ویژگی هنگام تبدیل زمان بین مناطق زمانی اهمیت زیادی دارد.
تبدیل زمان محلی و UTC
-
تبدیل به UTC
DateTime.Now.ToUniversalTime();
-
تبدیل به Local
utcDate.ToLocalTime();
در پروژههای بینالمللی همیشه توصیه میشود دادهها با UTC ذخیره و هنگام نمایش به زمان محلی کاربر تبدیل شوند.
بهترین روش کار با datetime در سیشارپ
برای استفاده بهینه از DateTime این توصیهها را در نظر بگیرید:
- برای ذخیره اطلاعات زمانی در پایگاه داده از DateTime.UtcNow استفاده کنید.
- برای دریافت ورودی کاربران از DateTime.TryParse یا TryParseExact بهره ببرید تا از بروز خطا جلوگیری شود.
- از فرمتهای استاندارد مانند ISO 8601 (yyyy-MM-ddTHH:mm:ss) برای تبادل داده بین سیستمها استفاده کنید.
- برای محاسبه اختلاف زمان از TimeSpan استفاده کنید و از محاسبات دستی بر اساس روز و ساعت خودداری کنید.
- در برنامههای چندمنطقهای (Multi-Time Zone)، زمان را به UTC ذخیره و هنگام نمایش به زمان محلی کاربر تبدیل کنید.

جمعبندی
DateTime یکی از مهمترین ساختارهای زبان #C برای مدیریت تاریخ و زمان است و تقریباً در تمام پروژههای نرمافزاری کاربرد دارد.
با استفاده از آن میتوانید تاریخ و زمان جاری را دریافت کنید، تاریخهای دلخواه بسازید، آنها را قالببندی کنید، اختلاف بین دو تاریخ را محاسبه کرده و عملیات مختلفی مانند افزودن یا کم کردن روز، ماه و سال را انجام دهید.
آشنایی با مفاهیمی مانند TimeSpan، DateTimeKind، زمان جهانی (UTC)، متدهای Parse و TryParse و اصول صحیح ذخیره و نمایش تاریخ، به شما کمک میکند برنامههایی دقیقتر، قابل اعتمادتر و سازگار با کاربران در مناطق زمانی مختلف توسعه دهید.
تسلط بر این ابزار نهتنها کیفیت کدنویسی را افزایش میدهد، بلکه از بسیاری از خطاهای رایج مرتبط با تاریخ و زمان در پروژههای واقعی جلوگیری خواهد کرد.



کاربران ما
شما هم نظرتون با ما دریاره “کار با datetime در سیشارپ” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید