در این جلسه به بررسی تاریخ و ساعت در ++C می پردازیم. کتابخانه استاندارد ++C، نوع داده مناسبی برای تاریخ و ساعت تهیه نکرده است. ++C ساختارها (struct) و توابع مربوط به تاریخ و ساعتی که در زبان C پیاده شده است را اتخاذ کرده است. برای دسترسی به ساختارها و توابع مربوط به تاریخ و ساعت، باید هدرفایل <ctime> را به برنامه ++C ضمیمه کنید.
چهار نوع داده مرتبط وجود دارد: clock_t، time_t، size_t و tm.
clock_t، time_t، size_t برای بیان تاریخ و ساعت سیستم به شکل عدد صحیح استفاده میشود. ساختار نوع tm تاریخ و ساعت را به شکل ساختار C با عناصر زیر ذخیره میکند:
struct tm { int tm_sec; // seconds of minutes from 0 to 61 int tm_min; // minutes of hour from 0 to 59 int tm_hour; // hours of day from 0 to 24 int tm_mday; // day of month from 1 to 31 int tm_mon; // month of year from 0 to 11 int tm_year; // year since 1900 int tm_wday; // days since sunday int tm_yday; // days since January 1st int tm_isdst; // hours of daylight savings time }
جدول زیر توابع مهمی که هنگام کار کردن با تاریخ و ساعت در C و ++C استفاده میشوند را لیست کرده است. همه این توابع بخشی از کتابخانه استاندارد C و ++C هستند. جزئیات مربوط به این توابع را میتوان با مراجعه به مرجع کتابخانههای استاندارد ++C بررسی کرد.
ردیف |
توابع و هدف استفاده |
1 |
;(time_t time(time_t *time این تابع زمان فعلی تقویم سیستم را از 1 ژانویه 1970، به ثانیه بر میگرداند. اگر سیستم زمان نداشته باشد، مقدار 1 را برمیگرداند. |
2 |
;(char *ctime(const time_t *time این تابع یک اشارهگر به یک رشته به فرم زیر رابرمیگرداند. «day month year hours:minutes:seconds year\n\0» |
3 |
;(struct tm *localtime(const time_t *time این تابع یک اشارهگر به یک ساختار نوع tm ، برای بیان ساعت محلی برمیگرداند. |
4 |
;(clock_t clock(void این تابع مقداری برمیگرداند که بیان کننده زمان تقریبی است که برنامه فراخواننده در حال اجرا بوده است. |
5 |
;(char * asctime ( const struct tm * time این تابع یک اشارهگر به رشته ای برمیگرداند که حاوی اطلاعاتی است که در ساختاری ذخیره شده که زمان را به فرم زیر تبدیل میکند. «month date hours:minutes:seconds year\n\0» |
6 |
;(struct tm *gmtime(const time_t *time این تابع اشارهگری به یک زمان در ساختار tm برمیگرداند. زمان در مختصات زمان جهانی (UTC)، یعنی زمان گرینویچ (GMT) بیان میشود. |
7 |
;(time_t mktime(struct tm *time این تابع تقویم-ساعت معادل در زمان یافت شده در ساختار مورد اشاره time را برمیگرداند. |
8 |
;(double difftime ( time_t time2, time_t time1 این تابع اختلاف بین time1 و time2 را محاسبه میکند. |
9 |
;(size_t strftime) این تابع برای فرمت دهی زمان و تاریخ در فرمت مشخص قابل استفاده است. |
تاریخ و ساعت جاری
فرض کنید قرار است که تاریخ و ساعت فعلی را چه به وقت محلی و چه به وقت مختصات جهانی بدست آورید. مثال زیر نحوه محاسبه آن را نشان میدهد.
#include <iostream> #include <ctime> using namespace std; int main() { // current date/time based on current system time_t now = time(0); // convert now to string form char* dt = ctime(&now); cout << "The local date and time is: " << dt << endl; // convert now to tm struct for UTC tm *gmtm = gmtime(&now); dt = asctime(gmtm); cout << "The UTC date and time is:"<< dt << endl; }
با اجرای این کد، خروجی زیر نتیجه میشود.
The local date and time is: Sat Jan 8 20:07:41 2011 The UTC date and time is:Sun Jan 9 03:07:41 2011
قالببندی زمان با استفاده از ساختار tm
هنگام کارکردن با تاریخ و ساعت در C یا ++C، ساختار tm بسیار حائز اهمیت است. همانطور که گفتیم، این ساختار تاریخ و ساعت را به صورت ساختاری از زبان C ذخیره میکند. مثال زیر توابع و ساختارهای مختلف مربوط به تاریخ و ساعت را به کار میبرد.
هنگامیکه در این بخش در مورد ساختار صحبت میکنیم، فرض میشود که شما دانش ابتدایی در مورد ساختار در C و چگونگی دسترسی به اعضای ساختار با استفاده از عملگر «<-» را دارید.
#include <iostream> #include <ctime> using namespace std; int main() { // current date/time based on current system time_t now = time(0); cout << "Number of sec since January 1,1970:" << now << endl; tm *ltm = localtime(&now); // print various components of tm structure. cout << "Year:" << 1900 + ltm->tm_year << endl; cout << "Month: "<< 1 + ltm->tm_mon<< endl; cout << "Day: "<< ltm->tm_mday << endl; cout << "Time: "<< 1 + ltm->tm_hour << ":"; cout << 1 + ltm->tm_min << ":"; cout << 1 + ltm->tm_sec << endl; }
با اجرای کد فوق، خروجی زیر حاصل میشود.
Number of sec since January 1,1970:1563027637 Year2019 Month: 7 Day: 13 Time: 15:21:38
منبع: ترجمه از سایت tutorialspoint.com
امیدواریم آموزش تاریخ و ساعت در ++C براتون مفید واقع شده باشه. در جلسات بعدی آموزش زبان ++C با ما همراه باشید.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.