Leo en dos cadenas con un año, el día juliano (día del año), hora, minuto y una observación.¿Por qué mktime() cambia el día del año de mi tm struct?
me tire de las variables relevantes a cabo utilizando sscanf:
sscanf(tide_str1.c_str(), "%d %d %d %d %Lf", &y1, &j1, &h1, &m1, &obs1);
sscanf(tide_str2.c_str(), "%d %d %d %d %Lf", &y2, &j2, &h2, &m2, &obs2);
Para este conjunto de datos en particular, los valores son 2011 083 23 22 1.1
entonces crear y rellenar una estructura tm, y corro mktime , con cout pide a los días en el medio y que cambia de 083 a 364.
int y1=2011, j1=83, h1=23, m1=22;
struct tm time_struct = {0, 0, 0, 0, 0, 0, 0, 0, 0}, *time_ptr = &time_struct;
time_t tv_min;
time_struct.tm_year = y1 - 1900;
time_struct.tm_yday = j1;
cout << time_struct.tm_yday << endl;
time_struct.tm_hour = h1;
time_struct.tm_min = m1;
time_struct.tm_isdst = -1;
cout << time_struct.tm_yday << endl;
tv_min = mktime(time_ptr);
cout << time_struct.tm_yday << endl;
¿por qué? ¿Es porque tm_mday yy tm_mon están establecidos en 0? Intenté inicialmente no inicializarlo todo a cero, pero luego mktime devolvió -1. ¿Qué debería hacer diferente si solo sé el día del año y no el mes y el día del mes?
El día del año es a veces incorrectamente * * se refiere como un "Día Juliano". De hecho, un número [Julian Day] (http://en.wikipedia.org/wiki/Julian_day) es el número de días desde el 1 de enero de 4713 aC; se usa en astronomía. –
Sí, pero es tan ampliamente utilizado (incorrectamente) dentro de ciertas profesiones que, en la práctica, es correcto. Mientras todos en un campo usen la misma jerga ... la comunicación ocurre. – RuQu