DateTime

DateTime ساختاری در دات‌نت است، که به شما اجازه استفاده، ذخيره، و دستکاري ساعت و تاريخ را می‌دهد. اين ساختار داراي متدهايي براي دستکاري تاريخ مانند اضافه و کم کردن روزها، ماه‌ها، يا سال‌ها و مطابق کردن آنها با تاريخ جاري را می‌دهند. همچنين داراي متدهايي است که تاريخ را به اشکال متفاوتي نشان می‌دهند. کد زير نحوه استفاده از ساختار DateTime را نشان می‌دهد.

using System;

public class Program
{
    public static void Main()
    {
        DateTime newyear = new DateTime(2010, 12, 25);

        Console.WriteLine(newyear.ToString());
    }
}
12/25/2010 12:00:00 AM

از يک سازنده که سال و ماه و روز را قبول می‌کند براي مقدار دهي به شيء DateTime و همچنين از متد ToString() ساختار DateTime براي نمايش تاريخ و ساعت استفاده می‌کنیم. متد ToString() در حالت پيشفرض شيء DateTime شما را به فرمت زير نمايش می‌دهد : MM/DD/YYYY HH:MM:SS AM/PM.
با متدهاي مختلفي که فرمت خروجي را با فرمت‌های ديگري نمايش می‌دهند در آينده آشنا می‌شوید. ساختار DateTime داراي چندين سازنده است که می‌توانید از آنها استفاده کنيد. جدول زير ليست سازنده‌های متداول اين ساختار را نشان می‌دهد:

سازنده‌ها
DateTime()
DateTime(int year, int month, int day)
DateTime(int year, int month, int day, int hour, int minute, int second)
DateTime(int year, int month, int day, int hour,int minute, int second, int millisecond)

سازنده پيشفرض، تاريخ را به صورت 01/01/0001 12:00:00 AM نشان می‌دهد. براي به دست آوردن تاريخ و ساعت جاري، می‌توان از خاصيت استاتيک Now ساختار DateTime استفاده کرد. براي به دست آوردن فقط تاريخ جاري می‌توان از خاصيت Today استفاده کرد.

DateTime now = DateTime.Now;
DateTime today = DateTime.Today;

براي نمايش شيء DateTime به صورت‌های ديگر می‌توان از چندين متد که در زير نشان داده شده‌اند استفاده کرد :

متد نمونه خروجي
ToLongDateString() Saturday, Octoboer 2, 2010
ToLongTimeString() 4:14:18 PM
ToShortDateString() 10/2/2010
ToShortTimeString() 4:14 PM

حتي می‌توان از متد String.Format() براي سفارشي کردن خروجی‌ها استفاده کرد.

Specifier نوع مثال خروجي
dd Day {0:dd} 10
ddd Day name {0:ddd} Tue
dddd Full Day Name {0:ddd} Tuesday
f, ff, … Second Fractions {0:fff} 932
gg, … Era {0:gg} A.D.
hh 2 digit hour {0:hh} 10
HH 2 digit hour,
24hr format
{0:HH} 22
mm Minute 00-59 {0:mm} 38
MM Month 01-12 {0:MM} 12
MMM Month abbreviation {0:MMM} Dec
MMMM Full month name {0:MMMM} December
ss Seconds 00-59 {0:ss} 46
tt AM or PM {0:tt} PM
yy Year, 2 digits {0:yy} 02
yyyy Year {0:yyyy} 2002
zz Timezone offset,
2 digits
{0:zz} -05
zzz Full timezone
offset
{0:zzz} -05:00
: Seperator {0:hh:mm:ss} 10:43:20
/ Seperator {0:dd/MM/yyyy} 10/2/2010

به عنوان مثال :

Console.WriteLine("The current date is {0:dd/MM/yyy}", DateTime.Now);
The current date is 10/2/2010

متدهاي DateTime

ساختار DateTime متدهاي زيادي براي کار کردن با ساعت و تاريخ در اختيار کاربر قرار می‌دهد. برخي از اين متدها در زير نشان داده شده است :

متد توضيح
AddDays() به وسيله اين متدها می‌توان مقاديري را به شيء DateTime اضافه و يا مقاديري را از آن کم کرد.
AddHours()
AddMilliseconds()
AddMinutes()
AddMonths()
AddSeconds()
AddTicks()
AddYears()
Equals() نشان می‌دهد که آيا شيء DateTime با آرگومان DateTime ارسال شده به متد برابر است يا نه
ToUniversalTime() مقدار نمونه DateTime را به ساعت جهاني تبديل می‌کند.
DaysInMonth() Static. تعداد روزهاي يک ماه را بر مي گرداند.
IsLeapYear() Static. نشان می‌دهد که آيا سال مشخص شده يک سال کبيسه است يا نه

در جدول زير ليست برخي از خواص (proerty) ساختار DateTime نشان داده شده است :

خاصيت توضيح
Date تاريخ را بر می‌گرداند.
Day نشان می‌دهد که چندمين روز ماه جاري است.
DayOfWeek نشان می‌دهد که چه روزي از هفته است (مثلاً شنبه يا …) .
DayOfYear نشان می‌دهد که چندمين روز سال جاري است (مثلاً 125 مين روز).
Hour ساعت را نشان می‌دهد.
Millisecond ميلي ثانيه را نشان می‌دهد.
Minute دقيقه را نشان می‌دهد.
Month نشان می‌دهد که چندمين ماه سال جاري است
Second ثانيه را نشان می‌دهد.
TimeOfDay نشان می‌دهد که چه ساعتي از روز است.
Year براي نشان دادن سال به کار می‌رود.
Now Static. تاريخ و ساعت جاري را نشان می‌دهد.
Today Static. فقط تاريخ جاري را نشان می‌دهد.
UtcNow Static. تارخ و ساعت جاري محلي را نشان می‌دهد.

در مثال زير در مورد نحوه استفاده از متدها و خواص ساختار DateTime آمده است :

using System;

public class Program
{
    public static void Main()
    {
        DateTime myDate = DateTime.Now;

        Console.WriteLine("Year: "  + myDate.Year);
        Console.WriteLine("Month: " + myDate.Month);
        Console.WriteLine("Day: "   + myDate.Day);
        Console.WriteLine("Today is {0}.", myDate.DayOfWeek.ToString());

        //Assign newDate with the current date added by 3 days
        DateTime newDate = myDate.AddDays(3);
        Console.WriteLine("The date 3 days from now is {0}.", newDate.ToShortDateString());

        //Assign newdate with the current date subtracted by 3 days
        newDate = myDate.AddDays(-3);
        Console.WriteLine("The date 3 days ago is {0}.", newDate.ToShortDateString()); 
    }
}
Year: 2010
Month: 10
Day: 3
Today is Sunday.
The date 3 days from now is 10/6/2010.
The date 3 days ago is 9/30/2010.

همانطور که مشاهده می‌کنید از خواص ساختار DateTime براي نمايش جداگانه اجزاء تاريخ استفاده کرده‌ایم. در مثال بالا نشان داده شده است که چطور به وسيله کم يا زياد کردن روزها می‌توان مقدار شيء DateTime را اصلاح کرد. مثلاً براي کم کردن 3 روز از شيء، از يک عدد منفي استفاده کرده‌ایم. همچنين متد ToShortDateString() براي نمايش شکل کوتاه تاريخ به کار می‌رود.