کار با تاریخ و زمان در C++ – آموزش زبان C++

۱۳۹۷-۰۹-۰۳
کار با تاریخ و زمان در C++ کتابخانه استاندارد C++ نوع مناسبی برای تاریخ ارائه نمی کند. زبان C++ ساختارها و توابع مربوط به تاریخ و زمان را از زبان برنامه نویسی C به ارث می برد. به منظور دسترسی به این ساختارها و توابع باید هدر فایل <ctime> را به برنامه خود اضافه کنید. چهار نوع داده مربوط به زمان وجود ...

cpp date and time 4460 کار با تاریخ و زمان در C++   آموزش زبان C++

کار با تاریخ و زمان در C++

کتابخانه استاندارد C++ نوع مناسبی برای تاریخ ارائه نمی کند. زبان C++ ساختارها و توابع مربوط به تاریخ و زمان را از زبان برنامه نویسی C به ارث می برد. به منظور دسترسی به این ساختارها و توابع باید هدر فایل <ctime> را به برنامه خود اضافه کنید.

چهار نوع داده مربوط به زمان وجود دارد که عبارت اند از: clock_t، time_t، size_t و tm. انواع clock_t، size_t و time_t می توانند زمان و تاریخ سیستم را به صورت عدد صحیح نشان دهند.

ساختار مربوط به tm را در زیر مشاهده می کنید:

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++ هستند.

ردیف توضیحات
۱ time_t time(time_t *time)

این تابع زمان تقویم فعلی سیستم را در تعداد ثانیه ای که از ۱ ژانویه ۱۹۷۰ سپری شده است را باز میگرداند. اگر سیستم زمان نداشته باشد، مقدار ۱ باز میگرداند.

۲ char *ctime(const time_t *time)

این تابع تاریخ را در فرمت “day month year hours:minutes:seconds year\n\0” باز میگرداند.

۳ struct tm *localtime(const time_t *time)

این تابع یک اشاره گر از نوع ساختار tm باز میگرداند و زمان محلی را نشان می دهد.

۴ clock_t clock(void)

این تابع به صورت تقریبی زمان سپری شده از موقعی که یک برنامه فراخوانی شده اجرا می شود را باز میگرداند. اگر این زمان در دسترس نباشد، مقدار ۱ باز میگرداند.

۵ char * asctime ( const struct tm * time )

این تابع اطلاعات ذخیره شده در ساختار tm را به صورت رشته و با فرمت “day month date hours:minutes:seconds year\n\0” باز میگرداند.

۶ struct tm *gmtime(const time_t *time)

این تابع زمان داده شده را به زمان تقویمی تبدیل می کند که به عنوان UTC بیان می شود.

۷ time_t mktime(struct tm *time)

این تابع مقدار معادل زمان تقویم محلی در ساختار مشخص شده توسط زمان را باز میگرداند.

۸ double difftime ( time_t time2, time_t time1 )

این تابع اختلاف زمانی بین time1 و time2 را بر حسب ثانیه باز میگرداند.

۹ size_t strftime()

این تابع برای فرمت بندی تاریخ و زمان در فرمت های مشخص استفاده می شود.

تاریخ و زمان فعلی

در برنامه نویسی ممکن است وضعیتی پیش آید که بخواهد تاریخ و زمان سیستم را بدانید. مثال زیر نشان می دهد که می توان با استفاده از توابع مربوط به تاریخ و زمان موجود در کتابخانه زبان C تاریخ  زمان فعلی سیستم را بدست آورد.

#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;
}

امتحان کنید

زمانی که کد بالا توسط کامپایلر زبان C++ اجرا شود، نتیجه زیر را تولید خواهد کرد:

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 از اهمیت بالایی برخوردار است. همان که در بالا ذکر شد، اکثر توابع مربوط به تاریخ و زمان از این ساختار استفاده می کنند. در مثال زیر از توابع مختلف و همچنین ساختار tm استفاده شده است.

اگر مبحث اشاره گرها و ساختار را مطالعه کرده باشید، می دانید که برای دسترسی به اعضای یک اشاره گر به ساختار باید از عملگر -> استفاده کنید.

#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" << 1970 + 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:1294548238
Year: 2011
Month: 1
Day: 8
Time: 22: 44:59

نوشته کار با تاریخ و زمان در C++ – آموزش زبان C++ اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.