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