time.h
کتابخانه «time.h» برای «زمان (Time)» و «تاریخ (Date)» است. یعنی گرفتن زمان الان، تبدیلش به محلی، و اندازه گیری مدت ها. مثل زنگ مدرسه که شروع و پایان زنگ را دقیق می گوید.
توابع پایه در کتابخانه time.h
چند تابع مهم داریم: time() زمان فعلی؛ localtime() تبدیل به محلی؛ gmtime() تبدیل به UTC؛ strftime() قالب دهی متن؛ difftime() اختلاف دو زمان؛ و mktime() ساخت زمان از اجزای struct tm.
نکته: «ساختار (Structure)» struct tm اجزای تاریخ وزمان را جدا نگه می دارد؛ مثل سال، ماه، ساعت.
نمونه کد: نمایش زمان و اختلاف
#include <stdio.h>
#include <time.h>
int main(void) {
time_t now;
struct tm *lt;
char buf[64];
now = time(NULL);
lt = localtime(&now);
if (lt != NULL) {
if (strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", lt) > 0) {
printf("Local time: %s\n", buf);
}
}
time_t start;
time_t end;
start = time(NULL);
for (volatile long i = 0; i < 100000000L; i++) {
}
end = time(NULL);
printf("Elapsed seconds: %.0f\n", difftime(end, start));
return 0;
}
تمرین گام به گام با time.h
- زمان فعلی را با
timeبگیر. - آن را با
localtimeبه محلی تبدیل کن. - با
strftimeخروجی را خوش فرم کن. - دو زمان بگیر و با
difftimeاختلاف را چاپ کن.
هشدار: با struct tm دست کاری اشتباه نکن؛ سپس دوباره از mktime برای نرمال سازی استفاده کن.
پیوندهای داخلی
برای حروف و ورودی ها، به ctype.h برو. برای محاسبات، math.h کمک بزرگی است. همچنین مرجع کتابخانه time.h را نشانه گذاری کن.
جمع بندی سریع
time()ثانیه یونیکس را برمی گرداند.localtimeوgmtimeزمان ساختاری می دهند.strftimeزمان را رشته ای می کند.difftimeاختلاف را ثانیه ای می دهد.