تاریخ و ساعت در ++C

در این جلسه به بررسی تاریخ و ساعت در ++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)

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

مطلب پیشنهادی:  آموزش کار با CMake

تاریخ و ساعت جاری

فرض کنید قرار است که تاریخ و ساعت فعلی را چه به وقت محلی و چه به وقت مختصات جهانی بدست آورید. مثال زیر نحوه محاسبه آن را نشان می‌دهد.

#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

مطلب پیشنهادی:  چندریختی یا Polymorphism در ++C

امیدواریم آموزش تاریخ و ساعت در ++C براتون مفید واقع شده باشه. در جلسات بعدی آموزش زبان ++C با ما همراه باشید.

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

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    جلسه بعدی >>

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *