در ++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++ میتوان به راحتی زمان فعلی را گرفت، آن را قالببندی کرد و روی آن محاسبات انجام داد؛ پایهای برای کار با ساعت، تاریخ، و زمانبندی برنامهها.