Sé que esto puede ser simple pero al ser C++ lo dudo. ¿Cómo convierto una cadena en el formato 01/01/2008 en una fecha para poder manipularla? Me complace dividir la cadena en los componentes del año del mes y mes. También estoy feliz si la solución es solo Windows.Convierta una cadena a una fecha en C++
Respuesta
#include <time.h>
char *strptime(const char *buf, const char *format, struct tm *tm);
Puede probar Boost.Date_Time Input/Output.
Me di cuenta sin usar strptime
.
Romper la fecha en sus componentes es decir, día, mes, año, entonces:
struct tm tm;
time_t rawtime;
time (&rawtime);
tm = *localtime (&rawtime);
tm.tm_year = year - 1900;
tm.tm_mon = month - 1;
tm.tm_mday = day;
mktime(&tm);
tm
ahora se puede convertir en un time_t
y manipular.
La biblioteca POCO tiene una clase DateTimeParser que podría ayudarle con eso. http://www.appinf.com/docs/poco/Poco.DateTimeParser.html
Para cualquiera que esté buscando strptime()
para Windows, requiere que la fuente de la función misma funcione. El último código de NetBSD no se transfiere fácilmente a Windows, desafortunadamente.
Yo mismo he utilizado la implementación here (strptime.h y strptime.c).
Otra pieza útil de código se puede encontrar here. Esto viene originalmente de Google Codesearch, que ya no existe.
Espero que esto ahorre mucha búsqueda, ya que me tomó bastante tiempo encontrar esto (y la mayoría de las veces terminé en esta pregunta).
#include <time.h>
#include <iostream>
#include <sstream>
#include <algorithm>
using namespace std;
int main()
{
time_t rawtime;
struct tm * timeinfo;
int year, month ,day;
char str[256];
cout << "Inter date: " << endl;
cin.getline(str,sizeof(str));
replace(str, str+strlen(str), '/', ' ');
istringstream(str) >> day >> month >> year;
time (&rawtime);
timeinfo = localtime (&rawtime);
timeinfo->tm_year = year - 1900;
timeinfo->tm_mon = month - 1;
timeinfo->tm_mday = day;
mktime (timeinfo);
strftime (str, sizeof(str), "%A", timeinfo);
cout << str << endl;
system("pause");
return 0;
}
Funciona bien ... Con solo un poco de modificación, esta debería ser la mejor respuesta – Everyone
Puede utilizar la biblioteca de impulso (multiplataforma)
#include <stdio.h>
#include "boost/date_time/posix_time/posix_time.hpp"
int main()
{
std::string strTime = "2007-04-11 06:18:29.000";
std::tm tmTime = boost::posix_time::to_tm(boost::posix_time::time_from_string(strTime));
return 0;
}
Sin embargo, el formato debe ser como se ha mencionado :)
¿Por qué no ir a por una solución más sencilla utilizando impulso
using namespace boost::gregorian;
using namespace boost::posix_time;
ptime pt = time_from_string("20150917");
- 1. Convierta una fecha en cadena en Javascript
- 2. Convierta una fecha de cadena a una marca de hora
- 3. Convierta una cadena a una fecha y hora
- 4. Convierta una cadena en una fecha en .net
- 5. Convierta una lista en una cadena en C#
- 6. Convierta una fecha juliana en una fecha normal de calendario
- 7. Convierta una fecha mySQL a la fecha de Javascript
- 8. Convierta un objeto a una cadena XML
- 9. Convierta una cadena delimitada a un diccionario <cadena, cadena> en C#
- 10. ¿Cómo asignar una cadena a una fecha en Automapper?
- 11. Python: Convierta una cadena en un entero
- 12. Powershell: Convierta un objeto en una cadena
- 13. Convierta una cadena a flujo de entrada XML en java
- 14. Convierta una lista de caracteres (o matriz) en una cadena
- 15. reemplazar una fecha JSON en una cadena a una fecha más legible
- 16. Convierta una Cadena en una matriz de bytes y luego vuelva a la Cadena original
- 17. Cómo convertir una cadena a una fecha en sybase
- 18. Convierta una cadena de Python a sus representantes ASCII
- 19. Convierta una cadena a int usando la consulta sql
- 20. Convierta una cadena con formato PEM a java.security.cert.X509Certificate
- 21. Convierta una matriz de cadenas en una cadena concatenada en C#
- 22. Convierta java.util.Date a la Cadena
- 23. Convierta un nombre de usuario a una cadena de SID en C# /. NET
- 24. ¿Cómo convierto una fecha a una fecha con formato HTTP en .Net/C#
- 25. Convierta una cadena en entero con decimal en Python
- 26. Convierta una imagen a escala de grises
- 27. Android: formato de fecha en una cadena
- 28. Convierta un entero en una cadena con signo en Ruby
- 29. Convierta una cadena hexadecimal en un byte en Java
- 30. Convertir cadena a la fecha - C#
Las fechas no son simples, solo mire en los Estados Unidos equivocándose. Boost :: Date_Time puede parecer grande, pero es solo un pequeño primer paso. – MSalters