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() براي نمايش شکل کوتاه تاريخ به کار میرود.
کلاس نیست استراکچره
بله کاملا درست می فرمایید، ممنون بابت توجهتون، اصلاح شد
آقای ابراهیمی عزیز سلام
آیا واقعا راهی برای تغییر ساعت و تاریخ ویندوز8.1 با سی شارپ هست؟(که عملا جواب بده)
سلام همه مثال ها در قالب console هستش یا از windows applicatin هم استفاده شده
سلام، واسه ویندوز فرم هم هست
سلام. ممنون از سایت خوبتون
اگه بخوام یه سری عملیات ریاضی روی تاریخ ها انجام بدم باید چطوری استفاده کنم؟
مثلا اختلاف دو تاریخ رو به روز برگردونه یا مثلا 100 روز رو به یه تاریخی مث 1398/02/12 اضافه کنه و نتیجه رو به فرمت yyyy/mm/dd برگردونه
ممنون
سلام، لینک زیر رو ببینید
اختلاف دو تاریخ
اگه به دردتون نخوردن، تو بخش پرسش و پاسخ سوالتونو مطرح بفرمایید
دمتون گرم من خیلی با کار با datetime مشکل داشتم، خیلی ممنون از مطالب مفیدتون
تشکر عالی بود
سلام
دمتون گرم مطلب بسیار مفیدی بود
خدا قوت
سلام، مرسی