خوش برگشتید.
خیلی خب.
حالا وقتشه که یه کمی در مورد DateTime یاد بگیریم.
همونطور که در مقدمه گفتم، DateTime یک struct واقعاً مهم هست که ما تقریباً همیشه
ازش استفاده خواهیم کرد.
پس بیایید مطمئن بشیم که می‌دونیم در مورد چی صحبت می‌کنیم.
خیلی خب.
پس شروع کنیم.
در این ویدیو شما در مورد DateTime یاد خواهید گرفت، که به ما اجازه می‌ده از زمان استفاده کنیم و به زمان دسترسی داشته باشیم تا
تفاوت بین یک تاریخ خاص و یک تاریخ دیگر و غیره رو به دست بیاریم.
و بنابراین فقط باید از کلاس DateTime استفاده کنیم.
و کلاس DateTime به طور خودکار در دسترس هست اگر namespace (فضای نام) system رو داشته باشید، که
تقریباً در هر برنامه‌ای که استفاده می‌کنیم وجود داره، درسته؟
پس بیایید جلو بریم و از DateTime استفاده کنیم و یک آبجکت DateTime بسازیم.
من اون آبجکت رو datetime صدا می‌زنم.
و اسمش datetime هست چون نه تنها تاریخ، بلکه زمان رو هم به ما می‌ده.
پس تمام اطلاعات مربوط به یک تاریخ و زمان رو تا سطح میلی‌ثانیه به ما می‌ده.
پس بیایید جلو بریم و یک آبجکت DateTime بسازیم، که اینجا انجام دادیم.
و حالا اون رو initialize (مقداردهی اولیه) می‌کنیم.
و فرض کنید می‌خوام فقط سال، ماه و روز رو داشته باشم.
پس می‌تونم چیزی مثل 2018، پنج و 31 رو وارد کنم، که تولد من هست یا امسال تولد من بود.
امسال.
پس دارم از اون استفاده می‌کنم تا بفهمم چند روز زندگی کردم.
به عنوان مثال، بعداً یک برنامه کوچک خواهیم نوشت که به ما بگه چند روز روی
این زمین بوده‌ایم، که خیلی جالبه، چون من نگاه کردم ببینم چند روز زندگی کردم و متوجه شدم
که خیلی زود قراره 11,111 روزه بشم.
و به طرز بامزه‌ای، یکی از دوستان من، یک دوست خیلی خوب دوران بچگی، در یازدهم نوامبر 11,111 روزه
خواهد شد.
و در کلن، جایی که من اهل اونجا هستم، کارناوال خیلی بزرگه و در یازدهم، ساعت 11 و 11 دقیقه شروع می‌شه.
که این در ماه نوامبر هست.
پس خیلی خنده‌داره که اون این تاریخ خیلی عجیب رو دقیقاً برای 11,111مین روز خودش داره.
پس شاید شما هم فهمیدید که روز جالب یا روز باحال برای جشن گرفتن شما چه روزی هست.
پس شما نه تنها تولدتون رو جشن می‌گیرید، بلکه شاید 10,000مین روز یا 15,000مین روز بودنتون روی
زمین رو، یا هر چند سال که هستید.
پس شاید چیزی پیدا کردید.
خیلی خب، کافیه حرف‌های حاشیه‌ای.
بیایید برگردیم به DateTime.
پس من این آبجکت کوچک DateTime رو ساختم و حالا می‌تونم چیزی رو روی کنسول بنویسم.
و می‌خوام بگم، تولد من هست و تاریخ تولد رو اینجا وارد می‌کنم.
و چی رو منتقل می‌کنم؟ آبجکت DateTime خودم رو منتقل می‌کنم.
حالا.
تولد من امسال در 2018 بود، اما من در سال 1988 متولد شدم.
پس اگر بخوام دقیق‌تر باشم، البته باید اون رو وارد کنم.
خیلی خب، پس بیایید اجراش کنیم.
Control F5 تا این برنامه رو اجرا کنیم و باز نگه داریم.
بفرمایید.
تولد من هست.
و در اینجا می‌بینید که ساختار به این صورته: 5/31/1988. Nesa Farhang, [10/6/2025 9:39 PM]
و بعد حتی ساعت، دقیقه و ثانیه و AM رو هم به ما می‌ده.
پس ما این‌ها رو مشخص نکردیم، اما تمام این اطلاعات رو می‌ده چون ما DateTime رو خواستیم و
این اطلاعات رو شامل می‌شه حتی اگر خودمون مشخصش نکرده باشیم.
و اگر یک آبجکت DateTime بسازیم، بذارید برگردم اینجا.
پس می‌تونیم جلو بریم و overload (سربارگذاری) های مختلفی داشته باشیم.
پس بذارید یکی بسازم.
همونطور که می‌بینید هشت تا overload وجود داره.
پس یکی که فقط یک DateTime خالی هست.
بعد یکی داریم با long ticks و ticks، یک تاریخ و تاریخ و زمان بیان شده با تعداد hundred nanosecond intervals (بازه صد نانوثانیه‌ای).
نانوثانیه‌ای.
بعد DateTime kind (نوع DateTime) رو داریم.
پس شما همچنین می‌تونید نوع DateTime که دارید رو تعریف کنید، int year (سال صحیح) و month (ماه) و بعد day (روز).
این همونی هست که ما استفاده کردیم.
بعد همچنین می‌تونید ساعت، دقیقه و ثانیه و همچنین DateTime kind رو اینجا در overload (سربارگذاری) های
مختلف مشخص کنید.
و در اینجا حتی می‌تونید تا جایی پیش برید که میلی‌ثانیه رو هم مشخص کنید.
و در نهایت همچنین با DateTime kind.
حالا شاید براتون سوال باشه که این DateTime kind چی هست، و این یک property (ویژگی) هست که مقداری رو به دست میاره که نشون می‌ده
آیا زمان نمایش داده شده توسط این instance (نمونه) بر اساس local time (زمان محلی)، Coordinated Universal Time (زمان جهانی هماهنگ)، UTC، هست
که UTC نامیده می‌شه، یا هیچ‌کدوم.
خیلی خب.
پس برگردیم به مثال خودمون.
و من می‌خوام مقادیری رو که اینجا داشتم وارد کنم یا برگردم بهشون.
و حالا می‌خوام بهتون نشون بدم که چطور می‌تونید تاریخ فعلی رو نمایش بدید.
پس تاریخ امروز رو روی صفحه نمایش بنویسیم.
پس اگر می‌خواید تاریخ امروز رو داشته باشید، می‌تونید به سادگی از datetime.today استفاده کنید.
این کار، تاریخ فعلی رو به شما می‌ده.
پس بیایید دوباره اجراش کنیم.
Control F5.
بفرمایید.
امروز دوازدهم ژوئن هست.
و خب زمان اینجا درست نیست، اما خب هنوز زمان فعلی رو داره یا هنوز زمان رو
داخلش داره اگر بخواید زمان خاص رو داشته باشید.
پس برای نوشتن زمان فعلی روی صفحه نمایش، از datetime.now استفاده می‌کنید.
پس این property (ویژگی)، یک آبجکت DateTime رو به دست میاره که بر اساس تاریخ و زمان فعلی روی این کامپیوتر
به صورت local time (زمان محلی) تنظیم شده.
و بذارید دوباره اجراش کنم.
و بفرمایید.
ساعت 1 و 50 دقیقه و 35 ثانیه p.m. هست.
خیلی خب.
پس اگر می‌خواید زمان فعلی یا زمانی که در کامپیوتر مشخص شده رو نمایش بدید، در
برنامه یا programتون، می‌تونید به سادگی از Datetime.now استفاده کنید.
حالا شما همچنین می‌تونید روز فردا رو به دست بیارید، یعنی می‌تونید روز بعد رو بگیرید، اما برای این کار باید
یه راه حل کوچیک ایجاد کنید.
پس propertyای به اسم tomorrow (فردا) وجود نداره.
بیایید بررسی کنیم.
DateTime dot tomorrow (دیتاایم نقطه فردا).
همونطور که می‌بینید، اون رو نداره. Nesa Farhang, [10/6/2025 9:39 PM]
اون today (امروز) رو داره و شما به طور کلی می‌تونید بررسی کنید که چه propertyهایی (ویژگی‌هایی) وجود دارن: now (الان)، today (امروز) و UTC now (زمان جهانی هماهنگ الان)،
که همون نوعی هست که بهتون نشون دادم.
و بعد methodهایی (متدهایی) هم وجود دارن، پس می‌تونید بفهمید که آیا سال کبیسه هست یا نه.
بعد می‌تونید نوع روزهای ماه رو مشخص کنید.
پس چند روز در یک ماه و سال خاص وجود داره.
چون همونطور که می‌دونید، فوریه می‌تونه یا 28 روز داشته باشه یا 29 روز.
بعد مارس 31 روز داره، آوریل 30 روز داره و غیره.
پس این می‌تونه خیلی مفید باشه.
و یک method (متد) برای اون وجود داره.
حالا فرض کنیم می‌خوایم روزی رو داشته باشیم که یا تاریخ فردا رو.
و برای به دست آوردن اون باید یک method (متد) کوچک اینجا بنویسیم.
اون static (ایستا) خواهد بود و DateTime رو برمی‌گردونه.
و اسمش رو get tomorrow (دریافت فردا) می‌ذارم.
و کاری که انجام می‌ده اینه که به سادگی datetime.today رو برمی‌گردونه.
و حالا می‌تونیم به امروز یک روز اضافه کنیم.
پس می‌بینید که می‌تونیم ثانیه، شش سال اضافه کنیم، می‌تونیم مقایسه‌اش کنیم و غیره.
و اون چیزی که من می‌خوام اینه که می‌خوام روزها رو اضافه کنم.
همونطور که زیر add (اضافه کردن) می‌بینید، راه‌حل‌ها یا گزینه‌های مختلفی اینجا وجود دارن.
و من می‌خوام از add days (اضافه کردن روزها) استفاده کنم و بگم یک.
پس من فقط می‌خوام یک روز به فردا اضافه کنم و اون رو برگردونم.
پس حالا می‌تونیم جلو بریم و از اون method (متد) استفاده کنیم تا روز فردا یا تاریخ فردا رو اعمال کنیم.
پس من یک آبجکت DateTime جدید ایجاد می‌کنم و اسمش رو tomorrow (فردا) می‌ذارم.
و اون فردا من خواهد بود، که با استفاده از method (متد) get tomorrow (دریافت فردا) به دست میارم.
پس بفرمایید حالا.
DateTime tomorrow (دیتاایم فردا) ما می‌تونه برای نمایش استفاده بشه.
پس بیایید فقط فردا رو نمایش بدیم.
فردا خواهد بود و بعد آبجکت tomorrow.
حالا بیایید دوباره اون رو نمایش بدیم.
و بفرمایید.
فردا سیزدهم ژوئن 2018 خواهد بود.
حالا به عنوان یک چالش کوچک برای شما، روی صفحه نمایش بنویسید که چه روزی از هفته رو داریم.
پس باید خیلی ساده باشه.
من هنوز ازش استفاده نکردم، اما شما می‌تونید به سادگی جلو برید و methodها و propertyهای (ویژگی‌های) DateTime رو بررسی کنید
تا اون رو به دست بیارید.
پس لطفاً جلو برید و امتحانش کنید.
خیلی خب امیدوارم امتحان کرده باشید.
پس بیایید جلو بریم و روی کنسول بنویسیم.
امروز هست و بعد از today (امروز) استفاده می‌کنیم.
پس datetime.today.day of week (دیتاایم نقطه امروز نقطه روز هفته).
روز هفته نمایش داده شده توسط این instance (نمونه) رو به دست میاره.
خیلی خب.
پس بیایید اون رو روی صفحه نمایش چاپ کنیم.
و بفرمایید.
امروز سه‌شنبه هست، عالیه، امیدوارم تونسته باشید این کار رو انجام بدید.
حالا فرض کنیم می‌خوایم اولین روز یک سال خاص رو به دست بیاریم، پس می‌تونیم جلو بریم و دوباره از static استفاده کنیم.
DateTime (دیتاایم). Nesa Farhang, [10/6/2025 9:39 PM]
پس دارم اینجا یک method (متد) ایجاد می‌کنم و اسمش get first day of year (دریافت اولین روز سال) خواهد بود.
و در اینجا می‌تونستیم یا از DateTime استفاده کنیم و فقط تاریخ اولین روز اون سال رو نشون بدیم.
یا می‌تونیم خیلی راحتش کنیم و از یک عدد صحیح استفاده کنیم.
پس من فقط یک سال رو اینجا وارد می‌کنم و اون یک DateTime برمی‌گردونه.
پس یک DateTime با سال یک و یک رو برمی‌گردونه.
چون اول ژانویه اولین روز سال هست.
پس با این، من اولین روز یک سال رو به دست میارم و می‌تونم به سادگی بگم اولین روز کدوم سال رو می‌خوام
که داشته باشم.
و این خیلی خوبه، چون حالا می‌تونیم جلو بریم و اولین روز یک سال خاص رو نمایش بدیم.
پس من فقط می‌گم اولین روز سال.
و اون خواهد بود، فرض کنید 1999.
و بفرمایید 1 ژانویه 1999.
شما اون رو دیدید.
شما می‌تونید روز هفته رو پیدا کنید، اما همچنین می‌تونید روزهای ماه رو هم پیدا کنید، همونطور که من هم
گفتم.
بیایید بررسی کنیم.
بیایید یک variable (متغیر) به اسم days (روزها) ایجاد کنیم و اون datetime.days in month (دیتاایم نقطه روزها در ماه) خواهد بود و فرض کنیم فوریه
در سال 2000.
اون روز چند روز داشت؟
و حالا می‌خوام اون رو روی کنسول بنویسم و روزها در فوریه 2000 فلان قدر بودند.
حالا می‌خوام جلو برم و اون رو برای سال‌های دیگه هم بررسی کنم.
پس حالا بیایید سال 2001 رو بررسی کنیم.
پس من فقط می‌گم days (روزها)، روزها در ماه 2001.
و اون فوریه 2001 خواهد بود و حالا 2004.
پس بیایید دوباره اون رو بررسی کنیم و اون 2004 خواهد بود.
پس بذارید روی صفحه نمایش چاپش کنم.
و بفرمایید.
همونطور که می‌بینید سال 2000 یک سال کبیسه هست و 2004 هم همینطور.
پس در سال‌های 2001، 2002 و غیره، فوریه فقط 28 روز داره و هر بار که بر چهار قابل تقسیم باشه،
29 روز داره، حتی اگر این دقیق دقیق نباشه.
پس سال‌هایی هستن که این اتفاق skip (رد) می‌شه.
پس فکر می‌کنم هر 100 سال skip می‌شه و بعد هر 400 سال یک بار skip می‌شه و غیره چون
خب، زمین در واقع به 365 روز نیاز نداره تا دور بزنه یا یک دایره کامل دور
خورشید بزنه، کمی بیشتر نیاز داره.
پس تقریباً به یک چهارم روز بیشتر نیاز داره.
اما دقیقاً یک چهارم روز بیشتر نیست.
چیزی حدود 0.24 روز اضافی هست.
به همین دلیله که باید.
خب، همونطور که می‌بینید، skip بشه.
خب شما نمی‌تونید اینجا ببینید، اما به هر حال باید skip بشه.
خیلی خب.
پس حالا بیایید بررسی کنیم که چطور می‌تونیم زمان فعلی رو اما به یک شیوه خاص به دست بیاریم.
پس بیایید جلو بریم و این کار رو انجام بدیم.
من یک DateTime ایجاد می‌کنم که اسمش رو now (الان) می‌ذارم.
و اون Datetime.now (دیتاایم نقطه الان) خواهد بود.
و حالا می‌خوام دقیقه فعلی رو نمایش بدم.
پس چیزی مثل minute is zero (دقیقه صفر است) می‌نویسم و اون now.minute (الان نقطه دقیقه) خواهد بود.
پس این property (ویژگی) به نام minute (دقیقه) وجود داره.
بعدی‌ای وجود داره که hour (ساعت) نامیده می‌شه و همچنین seconds (ثانیه‌ها). Nesa Farhang, [10/6/2025 9:39 PM]
و بیایید اون رو نمایش بدیم، now (الان) و می‌گه دقیقه شش هست.
پس ساعت 2 و شش دقیقه هست.
و این چیزیه که می‌تونید ببینید.
دقیقه شش.
خیلی خب.
حالا یک چالش کوچک برای شما: زمان رو در این ساختار نمایش بدید.
پس، اینقدر ساعت، بعد اینقدر دقیقه و Z ثانیه.
پس چیزی مثل 5 ساعت و 21 دقیقه و 30 ثانیه.
پس شاید 5 ساعت.
فلان قدر دقیقه و فلان قدر ثانیه.
پس لطفاً جلو برید و اون رو روی کنسول نمایش بدید.
خیلی خب امیدوارم امتحان کرده باشید.
و من می‌خوام بگم، فلان ساعت، بعد.
فلان دقیقه و.
ثانیه و اون now.hour (الان نقطه ساعت) خواهد بود.
now.minute (الان نقطه دقیقه) و now.second (الان نقطه ثانیه).
خیلی خب.
پس بیایید اون رو نمایش بدیم یا اجرا کنیم تا ببینیم زمان فعلی چنده.
و بفرمایید، ساعت 14، هشت دقیقه و 22 ثانیه.
این همون چیزیه که اینجا دارید.
پس ساعت 2، هشت دقیقه، 22 ثانیه.
خیلی خب.
در ادامه قراره یک برنامه کوچک بنویسیم که به ما بگه چقدر زمان بین الان و
زمانی که ما وارد می‌کنیم، وجود داره.
به عبارت دقیق‌تر، تاریخی که ما وارد می‌کنیم.
پس یک تاریخ رو در این فرمت بنویسید و اون y y y y (سال سال سال سال) هست که مخفف سال هست، month month (ماه ماه) و day day (روز روز).
روز روز.
پس این چیزیه که قراره به کاربر نمایش بدیم.
و بعد اون رو به عنوان input (ورودی) می‌گیریم که console.read line (کنسول نقطه خواندن خط) خواهد بود.
و بعد بررسی می‌کنیم که آیا اون کار کرده یا نه.
یعنی آیا می‌تونیم یک DateTime از هر چیزی که وارد شده، بسازیم.
پس همونطور که می‌بینید، DateTime یک method (متد) try parse (تلاش برای تجزیه) داره که حالا می‌تونه جلو بره و سعی کنه از ورودی که کاربر وارد کرده،
معنایی استخراج کنه.
و اون یک output (خروجی) خواهد داشت که DateTime خواهد بود.
و حالا من از اون DateTime استفاده خواهم کرد.
پس DateTime رو روی کنسول خواهم نوشت.
و من یک time span (بازه زمانی) ایجاد خواهم کرد.
و اون time span (بازه زمانی) روزهایی که گذشته رو خواهد داشت.
پس هر چند روزی که از تاریخی که وارد شده، گذشته یا خواهد گذشت تا اون روزی که وارد شده، فرا برسه.
فرا برسه.
پس کاری که حالا انجام می‌دم اینه که از variable (متغیر) now که قبلاً ایجاد کردیم، استفاده می‌کنم.
پس این now (الان) و من قراره کم کنم.
پس این method (متد) subtract (کم کردن) وجود داره.
و کاری که انجام می‌ده اینه که تاریخ و زمان مشخص شده رو از instance (نمونه) کم می‌کنه.
پس می‌خوام DateTime رو کم کنم.
این output (خروجی) هست که ما می‌گیریم.
پس هر چیزی که کاربر وارد کرده، که در مورد ما خواهد بود، گرفته می‌شه و اون خب
برای محاسبه این روزهای گذشته استفاده می‌شه.
و حالا در نهایت می‌خوام اون رو نمایش بدم.
پس می‌خوام بگم روزهای گذشته از و اون days past.days (روزهای گذشته نقطه روزها) خواهد بود. Nesa Farhang, [10/6/2025 9:39 PM]
پس این time span (بازه زمانی) هم یک property (ویژگی) days (روزها) داره که می‌تونیم ازش استفاده کنیم تا مولفه روزهای بازه زمانی نمایش داده شده توسط ساختار current time span (بازه زمانی فعلی) رو به دست بیاریم.
ساختار current time span.
خیلی خب.
پس اگر کار نکرد، فقط می‌گیم wrong input (ورودی اشتباه).
خیلی خب، بیایید امتحانش کنیم.
بیایید اون رو اجرا کنیم، یک تاریخ در این فرمت بنویسید.
پس فرض کنید می‌خوام بدونم از سال 1776 چه اتفاقی افتاده.
بعد ماه، جولای صفر هفت خواهد بود و روز صفر چهار خواهد بود.
پس این روز استقلال هست.
و حالا بیایید ببینیم از اون موقع چقدر زمان گذشته.
و بفرمایید، 88,366 روز.
پس این یک مثال عالی برای یک جشن بزرگ در 88,888مین روز هست.
آیا ایده عالی‌ای نیست؟
اگر کسی این کار رو نمی‌کنه، شما باید این رو بگیرید و یک مهمونی بزرگ هشت درست کنید، که اون
تقریباً یک سال و سه ماه دیگه خواهد بود.
پس باید چیزی مثل اکتبر یا سپتامبر 2019 باشه.
و اگر این رو بعداً تماشا می‌کنید، پس فرصت رو از دست دادید تا مهمونی‌ای برگزار کنید که در
88,888مین روز پس از روز استقلال خواهد بود.
خیلی خب، پس حالا یک چالش کوچک.
می‌دونم این ویدیو طولانیه، اما با من همراه باشید.
پس لطفاً جلو برید و یک برنامه بنویسید که کسی بتونه تاریخ تولدش رو وارد کنه و اون روزهای گذشته رو محاسبه کنه.
روزهای گذشته رو.
و کار سختی نیست.
در واقع خیلی ساده هست، چون حالا دیدید که چطور کار می‌کنه.
پس لطفاً جلو برید و امتحانش کنید.
خیلی خب امیدوارم انجام داده باشید.
پس تنها چیزی که قراره تغییر بدم، در واقع تغییر متن هست، یک تاریخ در این فرمت بنویسید.
و تاریخ تولد خود را بنویسید.
تاریخ.
آیا birth date (تاریخ تولد) است؟
احتمالاً birth date در این فرمت هست.
پس حالا همون چیزه.
اما حالا می‌گه روزهای گذشته از.
اما چیزی مثل، شما این مقدار روز عمر دارید، شما فلان قدر روز عمر دارید.
حالا بیایید اون رو تست کنیم و تاریخ تولد خود را در این فرمت بنویسید.
خیلی خب.
1990 یا 88، در مورد من، می و 31.
و من 10,969 روز عمر دارم و اگر می‌خواید می‌تونید روزهای بودنتون روی زمین رو با ما به اشتراک بذارید.
یا می‌تونید برنامه‌های خودتون برای جشن بزرگ روز استقلال در 88,888 روز بعد رو به اشتراک بذارید.
خیلی خب، پس امیدوارم این ویدیو رو دوست داشته باشید و امیدوارم بتونید ایده‌های جالبی از این بگیرید و
شما رو در ویدیوی بعدی ببینم.