آموزش C++ زمان و تاریخ

زبان C++ نوع مناسبی برای تاریخ ارائه نمی‌دهد و به همین منظور C++ ساختارهای مورد نیاز برای تاریخ و زمان را از زبان برنامه نویسی C به ارث می برد. به همین منظور نیاز است تا فایل هدر <ctim> را در برنامه خود قرار دهید.
 چهار نوع مرتبط با زمان وجود دارد .  clock_t, time_t , size_t و  tm. نوع clock_t، size_t و    time_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 );

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

6

struct tm *gmtime(const time_t *time);

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

7

time_t mktime(struct tm *time);

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

8

double difftime ( time_t time2, time_t time1 );

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

9

size_t strftime();

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

 

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

فرض کنید که میخواهید تاریخ و زمان  سیستم را به صورت محلی و یا جهانی (UTC)  بازیابی کنید . مثال زیر نحوه به دست آوردن هر دو تاریخ و زمان را نشان خواهد داد :
 

#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

ساختار tm در هنگام کار با تاریخ و زمان در C یا C++ بسیار مهم است. این ساختار تاریخ و زمان را در شکل ساختار C همانطور که در بالا ذکر شد، نگه می دارد. بیشتر توابع مربوط به زمان از ساختار tm استفاده می کنند. در زیر نمونه ای ارائه شده که از توابع مختلف تاریخ و زمان با ساختار tm استفاده می کند.
با توجه به اینکه از ساختارها استفاده می کنیم، در این قسمت فرض می‌کنیم که درک پایه ای از ساختار 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" << 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
برای درج نظر و یا طرح سوالات خود لطفا در سایت ثبت نام کنید و یا وارد سایت شوید

نظرات کاربران

برای این مطلب تاکنون نظری ارسال نشده است. شما اولین نفر باشید