C++:
Päivämäärän muuntaminen merkkijonoksi
How to: - Kuinka:
#include <iostream>
#include <iomanip>
#include <sstream>
#include <ctime>
int main() {
std::time_t raw_time = std::time(nullptr); // Haetaan nykyinen aika
std::tm* time_info = std::localtime(&raw_time);
std::stringstream ss;
ss << std::put_time(time_info, "%d.%m.%Y %H:%M:%S"); // Suomalainen päivämäärämuoto
std::string date_as_string = ss.str(); // Muunnos merkkijonoksi
std::cout << "Päivämäärä merkkijonona: " << date_as_string << std::endl; // Tulostus
return 0;
}
// Esimerkkituloste:
// Päivämäärä merkkijonona: 03.04.2023 14:52:01
Deep Dive - Syväsukellus:
Alkuperäisessä C:ssä ja C++:n alkuajoissa päivämäärät käsiteltiin time_t
-tyyppisten muuttujien ja strftime
-funktion avulla. strftime
on edelleen käytettävissä, mutta C++ tarjoaa std::put_time
, joka integroituu suoraan iostream-kirjastoon paremman tyyppiturvallisuuden ja helpomman käytön vuoksi.
Vaihtoehtona std::put_time
:lle, voit käyttää vanhempaa C-tyylistä strftime
-funktiota tai kolmannen osapuolen kirjastoja, kuten boost::date_time
.
Merkkijonomuunnoksen ymmärtäminen vaatii tietoa ajan käsittelystä C++-standardikirjastossa, joka on kehittynyt vuosien varrella. Käytännössä time_t
, tm
, ja string-streamit ovat avainkomponentteja tähän prosessiin. Muista ottaa huomioon aikavyöhykkeet ja lokalisoinnit käsitellessäsi päivämääriä.
See Also - Katso Myös:
- C++ Standard Library,
<iomanip>
,<sstream>
ja<ctime>
: https://en.cppreference.com/w/cpp/header - cppreference
std::put_time
: https://en.cppreference.com/w/cpp/io/manip/put_time - C++ Date and Time tutorial: https://www.cplusplus.com/reference/ctime/
- Boost Date_Time library: https://www.boost.org/doc/libs/release/libs/date_time/