C++ Date and Time

در ++C برای کار با تاریخ و زمان (Date & Time) از کتابخانهٔ استاندارد <ctime> استفاده می‌کنیم. این کتابخانه امکاناتی برای گرفتن زمان فعلی، قالب‌بندی، و انجام محاسبات روی زمان فراهم می‌کند.

🔹 1️⃣ گرفتن زمان فعلی

#include <iostream> #include <ctime> using namespace std; int main() { time_t now = time(0); // گرفتن زمان فعلی بر حسب ثانیه از Epoch (1970-01-01) cout << "Current time in seconds since Jan 1, 1970: " << now << endl; return 0; }

🔹 2️⃣ تبدیل زمان به رشته قابل خواندن

#include <iostream> #include <ctime> using namespace std; int main() { time_t now = time(0); char* dt = ctime(&now); // تبدیل به رشته قابل خواندن cout << "Current local time: " << dt; return 0; }

📌 خروجی مثال:

Current local time: Sat Sep 14 15:30:12 2024

🔹 3️⃣ ساختار tm برای جزئیات تاریخ و زمان

#include <iostream> #include <ctime> using namespace std; int main() { time_t now = time(0); tm *ltm = localtime(&now); // تبدیل به زمان محلی cout << "Year: " << 1900 + ltm->tm_year << endl; cout << "Month: " << 1 + ltm->tm_mon << endl; cout << "Day: " << ltm->tm_mday << endl; cout << "Hour: " << ltm->tm_hour << endl; cout << "Minute: " << ltm->tm_min << endl; cout << "Second: " << ltm->tm_sec << endl; return 0; }

توجه: tm_year سال از 1900 شروع می‌شود، و tm_mon از 0 تا 11 هست.

🔹 4️⃣ قالب‌بندی با strftime

می‌توانیم تاریخ و زمان را به شکل دلخواه چاپ کنیم:

#include <iostream> #include <ctime> using namespace std; int main() { time_t now = time(0); tm *ltm = localtime(&now); char buffer[80]; strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", ltm); cout << "Formatted date & time: " << buffer << endl; return 0; }

📌 خروجی نمونه:

Formatted date & time: 2024-09-14 15:45:12

برخی کدهای رایج در strftime:

  • %Y → سال کامل (مثلاً 2024)

  • %m → ماه دو رقمی (01-12)

  • %d → روز دو رقمی (01-31)

  • %H → ساعت (00-23)

  • %M → دقیقه

  • %S → ثانیه

🔹 5️⃣ محاسبات روی زمان

#include <iostream> #include <ctime> using namespace std; int main() { time_t start = time(0); // شبیه‌سازی کار با sleep یا محاسبات for(int i=0; i<100000000; i++); time_t end = time(0); double elapsed = difftime(end, start); // اختلاف زمان بر حسب ثانیه cout << "Elapsed time: " << elapsed << " seconds" << endl; return 0; }

🔹 6️⃣ نکات کلیدی

  • time(0) زمان فعلی را بر حسب ثانیه از 1 ژانویه 1970 می‌دهد (Epoch).

  • ()localtime زمان را به زمان محلی تبدیل می‌کند.

  • ()gmtime زمان را به UTC تبدیل می‌کند.

  • ()difftime اختلاف دو زمان را بر حسب ثانیه می‌دهد.

  • ()strftime قالب‌بندی دلخواه تاریخ و زمان را فراهم می‌کند.

💡 خلاصه:
با <ctime> در C++ می‌توان به راحتی زمان فعلی را گرفت، آن را قالب‌بندی کرد و روی آن محاسبات انجام داد؛ پایه‌ای برای کار با ساعت، تاریخ، و زمان‌بندی برنامه‌ها.