C ++ Tarih ve Saat

C ++ standart kitaplığı uygun bir tarih türü sağlamaz. C ++, tarih ve saat manipülasyonu için yapıları ve işlevleri C'den miras alır. Tarih ve saatle ilgili işlevlere ve yapılara erişmek için, C ++ programınıza <ctime> başlık dosyasını eklemeniz gerekir.

Zamanla ilgili dört tür vardır: clock_t, time_t, size_t, ve tm. Clock_t, size_t ve time_t türleri, sistem saatini ve tarihini bir çeşit tamsayı olarak temsil edebilir.

Yapı türü tm tarih ve saati aşağıdaki unsurlara sahip bir C yapısı şeklinde tutar -

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 veya C ++ 'da tarih ve saat ile çalışırken kullandığımız önemli fonksiyonlar aşağıdadır. Tüm bu işlevler standart C ve C ++ kitaplığının bir parçasıdır ve ayrıntılarını aşağıda verilen C ++ standart kitaplığına başvurarak kontrol edebilirsiniz.

Sr.No İşlev ve Amaç
1

time_t time(time_t *time);

Bu, 1 Ocak 1970'den bu yana geçen saniye sayısı olarak sistemin geçerli takvim zamanını döndürür. Sistemin zamanı yoksa, .1 döndürülür.

2

char *ctime(const time_t *time);

Bu, gün ay yıl saat: dakika: saniye yıl \ n \ 0 biçimindeki bir dizgeye bir işaretçi döndürür .

3

struct tm *localtime(const time_t *time);

Bu, tm yerel saati temsil eden yapı.

4

clock_t clock(void);

Bu, çağıran programın çalıştığı süreye yakın bir değer döndürür. Zaman mevcut değilse, 0,1 değeri döndürülür.

5

char * asctime ( const struct tm * time );

Bu, yapıda depolanan bilgileri içeren dizgeye bir işaretçi döndürür ve zamana göre şu şekle dönüştürülür: gün ay tarih saat: dakika: saniye yıl \ n \ 0

6

struct tm *gmtime(const time_t *time);

Bu, tm yapısı biçiminde zamana bir işaretçi döndürür. Zaman, temelde Greenwich Ortalama Saati (GMT) olan Koordineli Evrensel Zaman (UTC) ile temsil edilir.

7

time_t mktime(struct tm *time);

Bu, zamanla gösterilen yapıda bulunan zamanın takvim-zaman eşdeğerini döndürür.

8

double difftime ( time_t time2, time_t time1 );

Bu fonksiyon, time1 ve time2 arasındaki farkı saniye cinsinden hesaplar.

9

size_t strftime();

Bu işlev, tarih ve saati belirli bir biçimde biçimlendirmek için kullanılabilir.

Güncel Tarih ve Saat

Geçerli sistem tarihini ve saatini yerel saat veya Koordineli Evrensel Saat (UTC) olarak almak istediğinizi varsayalım. Aynı şeyi başarmak için örnek aşağıdadır -

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

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

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

Struct tm kullanarak saati biçimlendirme

tmC veya C ++ 'da tarih ve saat ile çalışırken yapı çok önemlidir. Bu yapı, tarih ve saati yukarıda bahsedildiği gibi bir C yapısı şeklinde tutar. Çoğu zaman ilgili işlevler tm yapısını kullanır. Aşağıda, tarih ve saatle ilgili çeşitli işlevlerden ve tm yapısından yararlanan bir örnek verilmiştir -

Bu bölümde yapıyı kullanırken, C yapısı ve ok -> operatörünü kullanarak yapı üyelerine nasıl erişileceği konusunda temel anlayışa sahip olduğunuzu varsayıyorum.

#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 is:: " << 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: "<< 5+ltm->tm_hour << ":";
   cout << 30+ltm->tm_min << ":";
   cout << ltm->tm_sec << endl;
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Number of sec since January 1,1970 is:: 1588485717
Year:2020
Month: 5
Day: 3
Time: 11:31:57