Υπάρχει ένας cross-platform τρόπος για να λάβετε την τρέχουσα ημερομηνία και ώρα σε C++;
Η C++ μοιράζεται τις συναρτήσεις ημερομηνίας/ώρας με τη C. Η δομή tm είναι ίσως η πιο εύκολη για έναν προγραμματιστή της C++ να δουλέψει με αυτήν - η ακόλουθη εκτυπώνει τη σημερινή ημερομηνία:
#include <ctime>
#include <iostream>
int main() {
std::time_t t = std::time(0); // get time now
std::tm* now = std::localtime(&t);
std::cout << (now->tm_year + 1900) << '-'
<< (now->tm_mon + 1) << '-'
<< now->tm_mday
<< "\n";
}
Οι βιβλιοθήκες std C παρέχουν time()
.
Αυτό είναι δευτερόλεπτα από την εποχή και μπορεί να μετατραπεί σε ημερομηνία και Η:Μ:Σ
χρησιμοποιώντας τις τυπικές συναρτήσεις της C. Το Boost έχει επίσης μια βιβλιοθήκη ώρας/ημερομηνίας που μπορείτε να ελέγξετε.
time_t timev;
time(&timev);
η τυπική βιβλιοθήκη της C++ δεν παρέχει έναν κατάλληλο τύπο ημερομηνίας. Η C++ κληρονομεί τις δομές και τις συναρτήσεις για τον χειρισμό ημερομηνίας και ώρας από τη C, μαζί με μερικές συναρτήσεις εισόδου και εξόδου ημερομηνίας/ώρας που λαμβάνουν υπόψη τους τον εντοπισμό.
// Current date/time based on current system
time_t now = time(0);
// Convert now to tm struct for local timezone
tm* localtm = localtime(&now);
cout << "The local date and time is: " << asctime(localtm) << endl;
// Convert now to tm struct for UTC
tm* gmtm = gmtime(&now);
if (gmtm != NULL) {
cout << "The UTC date and time is: " << asctime(gmtm) << endl;
}
else {
cerr << "Failed to get the UTC date and time" << endl;
return EXIT_FAILURE;
}