válida validar una programa para introduce ingresar formato fechas fecha clase algoritmo c++ date time

validar - C++ verifica si una fecha es válida



introduce una fecha válida (4)

La clase de tiempo de fecha de impulso debería ser capaz de manejar lo que necesita. Ver http://www.boost.org/doc/libs/release/doc/html/date_time.html

¿Hay alguna función para verificar si una fecha dada es válida o no? No quiero escribir nada desde cero.

por ejemplo, el 32/10/2012 no es válido y el 10/10/2010 es válido


Si el formato de la fecha es constante y no desea usar el impulso, siempre puede usar strptime , definido en el encabezado ctime :

const char date1[] = "32/10/2012"; const char date2[] = "10/10/2012"; struct tm tm; if (!strptime(date1, "%d/%m/%Y", &tm)) std::cout << "date1 isn''t valid/n"; if (!strptime(date2, "%d/%m/%Y", &tm)) std::cout << "date2 isn''t valid/n";


Si las barras se insertan programáticamente (supongo que sí, ya que supones que siempre estarán ahí), probablemente sería mejor validar el mes, el día y el año por separado. Por ejemplo:

if ( (month < 1) || (month > 12) ) return false;


Si su cadena está siempre en ese formato, lo más fácil sería dividir la cadena en sus tres componentes, rellenar una estructura tm y pasarla a mktime() . Si devuelve -1, entonces no es una fecha válida.

También podría usar Boost.Date_Time para analizarlo:

string inp("10/10/2010"); string format("%d/%m/%Y"); date d; d = parser.parse_date(inp, format, svp);