C++:
Analysera ett datum från en sträng
Hur man gör:
I modern C++ kan du använda biblioteket <chrono>
för att hantera datum och tider på ett inbyggt sätt, men det stöder inte direkt tolkning från strängar utan manuell bearbetning för mer komplexa format. Dock, för ISO 8601-datumsformat och enkla anpassade format, här är hur du kan åstadkomma tolkningen.
Använda <chrono>
och <sstream>
:
#include <iostream>
#include <sstream>
#include <chrono>
#include <iomanip>
int main() {
std::string date_str = "2023-04-15"; // ISO 8601-format
std::istringstream iss(date_str);
std::chrono::year_month_day parsed_date;
iss >> std::chrono::parse("%F", parsed_date);
if (!iss.fail()) {
std::cout << "Tolkat datum: " << parsed_date << std::endl;
} else {
std::cout << "Misslyckades med att tolka datum." << std::endl;
}
return 0;
}
Exempelutdata:
Tolkat datum: 2023-04-15
För mer komplexa format eller när man hanterar äldre versioner av C++, är tredjepartsbibliotek som date.h
(Howard Hinnants datum-bibliotek) populärt. Så här kan du tolka olika format med det:
Använda date.h
-biblioteket:
Se till att du har installerat biblioteket. Du kan hitta det här.
#include "date/date.h"
#include <iostream>
int main() {
std::string date_str = "April 15, 2023";
std::istringstream iss(date_str);
date::sys_days parsed_date;
iss >> date::parse("%B %d, %Y", parsed_date);
if (!iss.fail()) {
std::cout << "Tolkat datum: " << parsed_date << std::endl;
} else {
std::cout << "Misslyckades med att tolka datum från strängen." << std::endl;
}
return 0;
}
Exempelutdata (kan variera beroende på ditt systems lokala inställningar och datuminställningar):
Tolkat datum: 2023-04-15