Ho letto in due corde con un anno, il giorno giuliano (giorno dell'anno), ora, minuto e un'osservazione.Perché mktime() sta cambiando il giorno dell'anno della mia struttura tm?
ho tirare le variabili rilevanti utilizzando 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);
Per questo particolare insieme di dati, i valori sono 2011 083 23 22 1,1
poi creare e popolare una struttura tm, e corro mktime , con chiamate cout nel giorno intermedio e passa da 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;
Perché è così? È perché il tm_mday e il tm_mon sono impostati su 0? Inizialmente ho provato a non inizializzare tutto a zero, ma poi mktime ha restituito -1. Cosa dovrei fare in modo diverso se conosco solo il giorno dell'anno e non il mese e il giorno del mese?
Il giorno dell'anno è a volte in modo non corretto * * indicato come un "Giorno Giuliano". In realtà, un numero [Julian Day] (http://en.wikipedia.org/wiki/Julian_day) è il numero di giorni dal 1 ° gennaio 4713 aC; è usato in astronomia. –
Sì, ma è così ampiamente usato (erroneamente) all'interno di determinate professioni da essere, in pratica, corretto. Finché tutti all'interno di un campo usano lo stesso jargin ... la comunicazione avviene. – RuQu