شرح C++ Date and Time || تعلم c++ خطوة بخطوة

 

في واقع الأمر، نعلم أن C ++ هي نسخة مطورة من C، وبالتالي، هناك العديد من الوظائف والهياكل التي ورثتها C ++ من لغة C. التاريخ والوقت في C ++ هو أحد الهياكل التي ورثتها لغة C من أجل معالجة التاريخ والوقت. يتم تضمين ملف الرأس <ctime> في برنامج C ++ من أجل الوصول إلى الوظائف والهياكل المنظمة للتاريخ والوقت.

هناك أربعة أنواع من الوقت:

      ● Clock_t

      ● Time_t

      ● Size_t

      ● Tm

يتم تمثيل وقت النظام وتاريخه كنوع من الأعداد الصحيحة بواسطة الأنواع clock_t و size_t و time_t.

فيما يلي قائمة بالعناصر التي يحتفظ بها نوع الهيكل tm. يحمل نوع الهيكل 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
}


يتم عرض Functions المهمة التي تستخدمها عند العمل مع التاريخ والوقت في C أو C ++ في الجدول أدناه. كل هذه Functions جزء من مكتبة C ++ القياسية، ويمكنك التحقق من تفاصيلها باستخدام مرجع مكتبة C ++ القياسي أدناه.


الرقمالوصف
1

time_t time(time_t *time);

تقوم هذه الوظيفة بإرجاع وقت تقويم النظام الحالي من 1 يناير 1970 بالثواني، وإرجاع 1 إذا لم يكن هناك وقت.

2

char *ctime(const time_t *time);

إرجاع التاريخ والوقت بصيغة اليوم، الشهر، السنة: الدقائق: ثواني السنة \ n \ 0.

3

struct tm *localtime(const time_t *time);

تقوم هذه الوظيفة بإرجاع التوقيت المحلي على مؤشر tm

4

clock_t clock(void);

تُستخدم هذه الوظيفة لإرجاع قيمة تقارب مقدار الوقت الذي تم فيه تشغيل البرنامج المتصل. في حالة عدم توفر الوقت ، يتم إرجاع القيمة .1.

5

char * asctime ( const struct tm * time );

تقوم هذه الوظيفة بإرجاع المعلومات المخزنة في tm كسلسلة بالتنسيق "اليوم والشهر وتاريخ الساعات: الدقائق: ثواني السنة \ n \ 0"

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 );

تُرجع فرق الوقت بين الوقت 1 المُدخل والوقت 2 المُدخل بالثواني

9

size_t strftime();

تُستخدم هذه الوظيفة لتنسيق التاريخ والوقت وفقًا لتنسيقات محددة


التاريخ والوقت الحاليان Current Date and Time

إذا كان المبرمج يريد استرداد التاريخ والوقت الحاليين للنظام إما بتنسيق التوقيت المحلي أو بتنسيق 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
C ++

تنسيق الوقت باستخدام هيكل  Format Time using struct tm

يحتفظ هيكل tm عمومًا بالتاريخ والوقت في شكل هيكل C. من المعروف أنه الهيكل الأكثر أهمية أثناء العمل مع التاريخ والوقت إما في C أو 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" << 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


كلمات مفتاحية: