C++:
Analizando una fecha a partir de una cadena de texto
Cómo:
En C++ moderno, puedes utilizar la biblioteca <chrono>
para manejar fechas y horas de manera nativa, pero no admite directamente el análisis desde cadenas sin un análisis manual para formatos más complejos. Sin embargo, para formatos de fecha ISO 8601 y formatos personalizados simples, aquí te mostramos cómo puedes lograr el análisis.
Usando <chrono>
y <sstream>
:
#include <iostream>
#include <sstream>
#include <chrono>
#include <iomanip>
int main() {
std::string date_str = "2023-04-15"; // Formato ISO 8601
std::istringstream iss(date_str);
std::chrono::year_month_day parsed_date;
iss >> std::chrono::parse("%F", parsed_date);
if (!iss.fail()) {
std::cout << "Fecha analizada: " << parsed_date << std::endl;
} else {
std::cout << "Error al analizar la fecha." << std::endl;
}
return 0;
}
Salida de muestra:
Fecha analizada: 2023-04-15
Para formatos más complejos o cuando se trata con versiones anteriores de C++, las bibliotecas de terceros como date.h
(la biblioteca de fecha de Howard Hinnant) son populares. Aquí te mostramos cómo puedes analizar varios formatos con ella:
Usando la biblioteca date.h
:
Asegúrate de tener instalada la biblioteca. Puedes encontrarla aquí.
#include "date/date.h"
#include <iostream>
int main() {
std::string date_str = "Abril 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 << "Fecha analizada: " << parsed_date << std::endl;
} else {
std::cout << "Error al analizar la fecha a partir de la cadena." << std::endl;
}
return 0;
}
Salida de muestra (puede variar dependiendo de la configuración de localidad y fecha de tu sistema):
Fecha analizada: 2023-04-15