Omvandla ett datum till en sträng

C++:
Omvandla ett datum till en sträng

How to: (Hur man gör:)

#include <iostream>
#include <chrono>
#include <iomanip>

int main() {
    // Få nuvarande datum och tid
    auto now = std::chrono::system_clock::now();
    // Konvertera till ett tm objekt
    std::time_t t_now = std::chrono::system_clock::to_time_t(now);
    std::tm* date_ptr = std::localtime(&t_now);

    // Format och konvertera till sträng
    std::stringstream ss;
    ss << std::put_time(date_ptr, "%Y-%m-%d %H:%M:%S");
    
    // Skriv ut strängen
    std::string date_str = ss.str();
    std::cout << "Datum som sträng: " << date_str << std::endl;
}

Sample output:

Datum som sträng: 2023-04-05 15:45:12

Deep Dive (Djupdykning)

I äldre C++ versioner, var konvertering av datum en ganska besvärlig uppgift med strftime och time_t. Med C++11 introducerades <chrono> biblioteket som gav en mer robust hantering av tid och datum. std::put_time är en modernare funktion som finns i <iomanip>, vilket underlättar formatering av datum och tid.

Alternativ till std::put_time inkluderar att använda tredjepartsbibliotek som Boost’s DateTime eller strängmanipuleringsfunktioner för att skapa egna datumsträngformat.

Implementationen ovan använder system_clock för att få nuvarande tid, konverterar det till time_t, sedan till en tm pekare som slutligen formateras till en sträng. Precis som många andra språk, hanterar C++ datum och tid som objekt före konvertering till sträng.

See Also (Se Även)